栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

专升本C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

专升本C语言

程序设计题

两个月的坚持,终不负所望,希望我自己写的题库能为你们寻求一些帮助(针对湖北专升本C语言),希望你们也能不负所托。题的
排名不分先后

文章目录
  • 程序设计题
          • 判断是否是质数(素数)
          • 最大公约数(最大公因数)
          • 最小公倍数
          • 回文数
          • 阶乘
          • 二分查找
          • 水仙花
          • 比较字符串的大小
          • 斐波那契数列
          • 键盘输入5个学生姓名,找出并输出字典排序最前面的学生姓名。
          • 输入年月日,打印出它是这一年的第几天
          • 数字转字符串 列如483字符串“483”
          • 验证一个大于等于6偶数总能表示为两个素数之和
          • 将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,'o'也要复制过去。'o'后面的字符不复制。
          • 编程序计算元的近似值
          • 输入一个大写字母,输出字母表中它前面的字母和后面的字母。如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。
          • Sn=a+aa+aaa+....+a...a的值,其中a是一个数字,n表示a的位数
          • 一球从100m高度自由落下,每次落地后反跳会原来高度的一半,再落下。求它第10次落地时,共经过多少米?第10次反弹多高?
          • 编写一个函数void fun(char *ss),它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
          • 韩信有一队兵,他想知道有多少人,便让士兵排队报数。按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。编程,帮韩信算出有多少士兵。
          • 已知某公司员工的基本工资为800元,绩效工资按每月工程利润提成(profit),利润提成比例(d)如下,编写程序计算员工工资。
          • 一个数如果恰好等于它的因子之和,这个数就称为“完数”。
          • 将一个正整数分解质因数。例如:输入90 打印出 90 = 2 * 3 * 3 * 5
          • 编写程序,输入年份和月份,判断是否闰年,什么季节以及该月有多少天
          • 编写程序,根据用户输入的三角形的三边长判定是何种三角形,对于有效三角形,求出面积
          • 编写一个程序将十进制数n转化为二进制数,要求从低位到高位输出二进制数的各位
          • 编写一个层序,输入若干个整数,以-1标记输入结束,输出其中的最大数和最小数
          • 编写一个程序,输出菱形图案,第一行为一个字母A,第二行为三个字母B,依此类推
          • 编写一个程序,对输入的正整数n,输出{0,1,…,n-1}的所有子集,例如输入3时,输出如下:{},{0},{1},{0,1},{2},{0,2},{1,2},{0,1,2}
          • 编写一个程序,利用公式求出e的近似值,n由用户输入
          • 有甲、乙、丙三人对一块矿石进行判断,每人判断两次,甲认为这块矿石不是铁也不是铜;乙认为这块矿石不是铁,是锡;并认为这块矿石不是锡,是铁;老工人两次判断都对,普通队员两次判断一对一错,实习生两次判断都错。则矿石是什么矿?甲乙丙身份分别是什么
          • 写一个程序计算下列函数的值
          • 求4x4矩阵中对角线元素的和。
          • 输人4个整数,要求按由小到大的顺序输出。
          • 输入一元二次方程的三个系数a,b,c,求出方程的根,如果没有根显示Error。
          • 把一个整数数组改为逆序,并将结果输出,例如:原数组a[N] = {1,2, 3,4,5}变为a[N] = { 5,4,3,2,1 }
          • 从键盘上输入若干个整数,其值在0-9之间,用-1作为结束输入的标记,统计0-9中各个数的个数,并输出。
          • 编写程序对ss字符中所有下标为奇数位置上的字母为
          • 编写程序对指定字符在字符串a中出现的次数进行统计, 统计的数据存到b
          • 数组中。其中:字符'A'出现的次数存放到b[0]中, 字符'B'出现的次数存放到b[1]中,
          • 编写程序将字符串中的数字字符删除后输出。如字符为"china123df", 则输出为"chinadf"
          • 九九乘法表
          • 函数f(x)可表示为:
          • 从键盘上输入一个百分制成绩score,按下列原则输出其等级:
          • 任意输入 3 个整数,编程实现找到这 3 个整数最大数
          • 在厨王争霸赛中,有12个评委为现场厨师打分,满分100。每位厨师最后得分是:去掉一个最高分和一个最低分,求其余得分的平均值。请编写一个程序实现
          • 猴子摘了一堆桃,第一天吃了一半,还嫌不过瘾,又吃了一个;第二天又吃了剩下的一半,然后又多吃了一个;以后每天如此。到第10天,猴子一看只剩下一个了。问最初有多少个桃子?
          • 问77777的约数中最大的三位数是多少?==>287 555555->777
          • 求77的23次方的最后三位数(mod操作)
          • 杨辉三角形
          • 编程求1!+3!+5!+7!+...+19!
          • 输入n个数,求其最大数,最小数和平均值
          • 统计用数字0~9可以组成多少个没有重复数字的3位偶数
          • 若字符串为"baacda",执行后程序为"baaaacdaa"
          • 编一程序, 将字符串的第m个字符开始的全部字符复制到另一个字符串中。
          • 要求在主函数中输入字符串及m值并输出结果,在被调用函数中完成复制
          • 求1到n的阶乘和公式为sum = 1! + 2! + … + n!
          • 将a数组中的内容按颠倒的次序重新存放
          • 输入n个数用冒泡排序将其升序排列
          • 在有序的数列中插入任意一个数,是插入后仍然有序
          • 现需运输200吨货物。已知大卡车运8吨,中型卡车运4吨,微型车运2吨,试编程统计共有多少种配车方案?
          • 随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
          • 矩阵a转置矩阵b的形式
          • 百钱百鸡 公鸡5元一只,母鸡3元一只,小鸡1元三只,要买一百只鸡,且包含公鸡母鸡小鸡,输出所有可能方案
          • 中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
          • abcedf edfabc 前三个字符换到后面
          • 输入一个正整数,要求:
          • 选择排序
          • 删除一维数组中重复的元素
          • 礼炮
          • 编写函数,输入一个字符串(<40个字符),要求输出这个字符串每个字符,每两个字符之间空一个空格。
          • 验证一个大于等于6偶数总能表示为两个素数之和
          • 两个乒乓球队进行比赛,各出三人。甲队为a, b, c三人,乙队为x, y, z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x, z比,请编程序找出三队赛手的名单。
          • 500间的全部素数,同时求其和。(只能被1和这个数自身整除的数叫素数)
          • 找出二维数组a中的最大元素,并要求输出该元素以及该元素的行号和列号,二维数组元素可以从键盘输入也可以定义时直接赋初值。
          • 打印菱形
          • 编写一个程序,求分数序列2/1 、3/2 、 5/3 、 8/5 、 13/8 、 21/13 、....的前50项的和
          • 下面程序的功能是:查找n在数组a中最后一次出现的位置(数组首元素的位置为零)
          • 输入一行字符,单词之间用一个空格分隔,统计其中有多少个单词
          • 求一维数组a中的最小元素及其下标。
          • 已知一个圆的半径为r(r是一个可变的量),求圆的面积和周长
          • 下列给定程序中函数m的功能是:求出s所指字符串中最后一次出现的所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到则函数值为NULL。
          • 编写程序,实现输入一行字符串s,分别统计其中英文字母、空格、数字和其他字符的个数
          • 编程题有2个字符数组s1,s2,请把s1中的存在的s2字符删除
          • 输出1到100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积12大于数字之和8。
          • 输入20个整数,用一维数组存储,请编程求其中最大值和次大值并输出。
          • 有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号

判断是否是质数(素数)
#include 
int main() {

	int n, i;
	printf("请输入你要判断的数:");
	scanf("%d", &n);
	for (i = 2; i < n; i++)
		if (n % i == 0) break;
    
	if (i < n) {
		printf("%d不是质数n", n);
	}
	else {
		printf("%d是质数n", n);
	}

	return 0;
}
最大公约数(最大公因数)
//暴力破解法
#include
int main()
{
	int m, n, temp, i;
	printf("Input m & n:");
	scanf("%d%d", &m, &n);
	if (m < n)  
	{ 
		temp = m;
		m = n;
		n = temp;
	}
    //或者三元运算
    //n = m < n ? m , n;
	for (i = n; i > 0; i--)  
		if (m % i == 0 && n % i == 0)
		{	
			printf("最大公约数为%dn", i);
			break;
		}
	return 0;
}



//辗转相除法
#include
int max(int m, int n) {
	if (m % n == 0) {
		return n;
	}
	else {
		return max(n, m % n);
	}
}
int main()
{	//辗转相除法
	int m, n, temp;
	printf("请输入两个数 m & n:");
	scanf("%d%d", &m, &n);
	temp = max(m, n);
	printf("最大公因数是%d", temp);
    
	return 0;
}




//更相减损术
#include
int max(int m, int n) {
    int tmp = 0;
    if (m == n) {
        return n;
    }
    else if (m > n) {
        tmp = m - n;
        max(tmp, n);
    }
    else {
        tmp = n - m;
        max(tmp, m);
    }
}
int main()
{
    //更相减损术
    int m, n, i;
    printf("请输入两个数 m & n:");
    scanf("%d%d", &m, &n);
    printf("最大公因数是%d", max(m, n));

    return 0;
}
最小公倍数
#include 
int main()
{
    int a, b;
    printf("请输入两个数:");
    scanf("%d %d", &a, &b);
    int m = (a > b ? a : b);
    while (1)
    {
        if (m % a == 0 && m % b == 0)
        {
            break;
        }
        m++;
    }
    printf("最小公倍数是%dn", m);

    return 0;
}

//求最大的公因数和最小公倍数
#include
void main() {
	int a, b, m, n;//a是最大公因数 b是最小公倍数
	scanf("%d,%d", &m, &n);
	a = m > n ? m : n;
	while (a >= 1)
	{
		if (m % a == 0 && n % a == 0) {
			break;
		}
		a--;
	}
	b = m * n / a;
	printf("最大公因数是%d,最小公倍数是%d", a, b);
}
回文数
#include 
int main()
{
	//	所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的 12321
	int num, s, y;
	printf("请输入你要判断的数:");
	scanf("%d", &num);
	s = num;
	while (s > 0)
	{
		y = y * 10 + s % 10;
		s /= 10;
	}
	if (y == num) {
		printf("%d是一个回文数n", num);
	}
	else {
		printf("%d不是一个回文数n", num);
	}

	return 0;
}
阶乘
#include 
int main() {

	int fac(int n);
	int n, y;
	printf("输入要求的阶乘:");
	scanf("%d", &n);
	y = fac(n);
	printf("%d!=%dn", n, y);
    
	return 0;
}
int fac(int n) {
	int f;
	if (n < 0) {
		printf("n不能小于0");
	}
	else if (n == 0 || n == 1) {
		f = 1;
	}
	else {
		f = fac(n - 1) * n;
	}
	return (f);
}



//1!+2!+3!+...+20!的和
#include 
int main() {
	int n, s = 0, t = 1, i;
	printf("输入要求的阶乘:");
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		t = t * n;
		s = s + t;
	}
	printf("1!+2!+3!+...+%d!=%dn", n, s);

	return 0;
}

​

二分查找
#include
int main()
{	//前提是有序数组
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }, key;// key是要查找的数字
	int len = sizeof(arr) / sizeof(arr[0]); //数组长度
	int left = 0;			//最小下标
	int right = len - 1;	//最大下标
	scanf("%d", &key);		//输入要查找的正整数key
	while (left <= right)
	{
		//int mid = (left + right) / 2;
		int mid = left + (right - left) / 2;//防止数据过大,越界

		if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else
		{
			printf("找到了,下标是:%dn", mid);
			break;
		}
	}
	if (left > right)
		printf("找不到n");

	return 0;
}
水仙花
int main()
{
	int b, s, g, n;
	printf("result is:");
	for (n = 100; n < 1000; n++)  
	{
		b = n / 100;
		s = n / 10 % 10;
		g = n % 10;
		if (n == b * b * b + s * s * s + g * g * g)  
			printf("%d  ", n);
	}
	printf("n");

	return 0;
}
比较字符串的大小
#include
int Mystrcmp(char *p1,char *p2){
	while(*p1==*p2){
		if(*p1==''){
			return 0;
		}
		p1++;
		p2++;
	}
	return *p1-*p2;
}
int main(){
	
	char  a1[]="chb";
	char  a2[]="chd";
	printf("%d",Mystrcmp(a1,a2));
	return 0;
}

斐波那契数列
#include
int Fibon(int n)
{
	if (n == 1 || n == 2)
	{
		return 1;
	}
	else
	{
		return Fibon(n - 1) + Fibon(n - 2);
	}
}
int main()
{
	for (int i = 1; i <= 12; i++)
	{
		printf("%d ", Fibon(i));
	}
	return 0;
}
键盘输入5个学生姓名,找出并输出字典排序最前面的学生姓名。
#include
#include
int main()
{
	int i;
	char str[80], min[80];
	printf("请输入第一个学生名字:");
	gets(str);
	strcpy(min, str);
	for (i = 1; i < 5; i++)
	{
		gets(str);
		if (strcmp(str, min) < 0)
		{
			strcpy(min, str);
		}
	}
	printf("n字典排序最前面的学生姓名:");
	puts(min);
	return 0;
}
输入年月日,打印出它是这一年的第几天
#include
#include
int main()
{
	int i, leap, year, month, day = 0;
	int dayTab[2][13] = { {0,31,28,31,30,31,30,31,31,30,31,30,31},
						  {0,31,29,31,30,31,30,31,31,30,31,30,31} };
	printf("请输入年月日:");
	scanf("%d%d%d", &year, &month, &day);
	leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
	for (i = 1; i < month; i++)
	{
		day = day + dayTab[leap][i];
	}

	printf("今年的第%d天", day);
	return 0;
}
数字转字符串 列如483字符串“483”
#include
#include
void itoa(int num, char str[100]) {
	int i = 0;
	do {
		str[i] = num % 10 + '0';
		num /= 10;
		i++;
	} while (num);
	str[i] = '';
}
int main()
{
	int num;
	char str[100];
	printf("输入一个待转字符串整数:");
	scanf_s("%d", &num);
	itoa(num, str);
	printf("转后的字符串为:");
	for (int i = strlen(str) - 1; i >= 0; i--)
		printf("%c", str[i]);
}
验证一个大于等于6偶数总能表示为两个素数之和
int fact(int n) {
	int i;
	if (n < 2) {
		return 0;//这里用0和1方便判断真假
	}
	else if (n) {
		return 1;
	}
	else {
		for (i = 2; i <= n / 2; i++)
		{
			if (n % i) return 0;
		}
		return 1;
	}
}
#include
int main() {
	int n, i;
	printf("请输入一个大于六的整数,在这里我们要求哥德巴赫猜想:");
	scanf("%d", &n);
	if (n < 6) {
		printf("error!n");
	}
	else {
		for (i = 3; i <= n / 2; i = i + 2) {
			if (fact(i) == 1 && fact(n - i) == 1) {
				printf("%d =%d + %dn", n, i, n - i);
			}
		}
	}
	return 0;
}
将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,‘o’也要复制过去。’o’后面的字符不复制。
#include 
#include 
int main() {
	char s1[80], s2[80];
	int i;
	printf("input s2:");
	gets(s2);
	for (i = 0; i <= strlen(s2); i++)
	{
		s1[i] = s2[i];
	}
	printf("s1:%sn", s1);
	return 0;
}
编程序计算元的近似值

#include 
#include 
int main(void) {
	//while循环是先执行判断再执行循环体
	//所以count用来计数一共累加多少个从1开始,n作为分母也从1开始
	int n = 1, count = 1;
	//取最后的累加和使用类型为double类型
	double pi = 0.0, sum = 1.0, term = 1.0, sign = 1;
	//1e-5就是 1*(10的-5次方)即0.00001 
	while (fabs(term) >= 1e-5) {
		count++;
		sign = -sign;
		n = n + 2;
		term = sign / n;
		sum = sum + term;
	}
	pi = 4 * sum;
	printf("π=%f n 一共累加项count=%dn", pi, count);
	return 0;
}
输入一个大写字母,输出字母表中它前面的字母和后面的字母。如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。
#include 
int main()
{
	char c;
	scanf("%c",&c);
	if(c>='A' && c<='Z')
	{
		if(c=='A') printf("没有前面的字母n");
		else if(c=='Z') printf("没有后面的字母n");
		else printf("前面字母:%c,后面字母:%cn",c-1,c+1);
	}
	return 0;
}
Sn=a+aa+aaa+…+a…a的值,其中a是一个数字,n表示a的位数
#include
int main() {
	int a, n, i = 1, sn = 0, tn = 0;
	printf("a,n=");
	scanf("%d,%d", &a, &n);
	while (i <= n)
	{
		tn = tn + a;
		sn = sn + tn;
		i++;
		a = a * 10;
	}
	printf("a+aa+aaa.....=%dn", sn);
	return 0;
}
一球从100m高度自由落下,每次落地后反跳会原来高度的一半,再落下。求它第10次落地时,共经过多少米?第10次反弹多高?
#include  
int main()
 {
  	double sn=100,hn=sn/2;
  	int n;
  	for(n=2;n<=10;n++)
	{
   		sn=sn+2*hn;   
   		hn=hn/2;      
    }
    printf("第10次落地时共经过%f米n",sn);
    printf("第10次反弹%f米n",hn);
    return 0;
}

#include  
int main()
{
	int i, n = 10;
	float sum = 0.0, num = 100.0;
	for (i = 0; i < 10; i++)
	{
		sum = sum + num + num / 2.0; //下降高度+弹起的高度
		num = num / 2;
	}
	printf("第10次落地时共经过%f米n", sum - num); //多了一次弹起的高度
	printf("第10次反弹%f米n", num);
	return 0;
}


编写一个函数void fun(char *ss),它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
 void fun(char *ss)
{
int i,n;
n=strlen(ss);
for(i=1;i<n;i+=2)
if(ss[i]>= 'a'&& ss[i]<='z')
ss[i]=ss[i]-32;
}
韩信有一队兵,他想知道有多少人,便让士兵排队报数。按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。编程,帮韩信算出有多少士兵。
#include 
int main()
{
	int  x;
	for (x=1; ;x++) 
	{
		if (x%5==1 && x%6==5 && x%7==4 && x%11==10)
		{
			printf("x = %dn", x); 
			break;		
        }		
	 }	
	 return 0;
}
已知某公司员工的基本工资为800元,绩效工资按每月工程利润提成(profit),利润提成比例(d)如下,编写程序计算员工工资。
#include 
int main()
{
	int profit;
	float d;
	float s = 800;
	printf("请输入工资:");
	scanf("%d", &profit);
	if (profit < 0)
	{
		printf("输入的工资无效n");
		return 1;
	}
	switch (profit / 1000)
	{
	case 0: d = 0; break;
	case 1: d = 0.1; break;
	case 2:
	case 3:
	case 4: d = 0.15; break;
	case 5:
	case 6:
	case 7:
	case 8:
	case 9: d = 0.20; break;
	default: d = 0.25;
	}
	s = s + profit * d ;
	printf("工资s=%.2f", s);
	return 0;
}
一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3.编程。找出1000以内的所有完数。

#include "stdio.h"
int main() {
	int m, s, i;
	for (m = 2; m < 1000; m++) {
		s = 0;
		for (i = 1; i < m; i++) {
			if ((m % i) == 0) {
				s = s + i;
			}
		}
		if (s == m) {
			printf("n%d is a wanshun", m);

			for (i = 1; i < m; i++) {
				if (m % i == 0) {
					printf("%dt", i);
				}
			}
		}
	}
	return 0;
}

将一个正整数分解质因数。例如:输入90 打印出 90 = 2 * 3 * 3 * 5
#include 
int main() {
	int n ;
	printf("请输入一个正整数:");
	scanf("%d", &n);
	printf("%d = ", n);
	for (int i = 2; i <= n; i++) {
		while(n != i) { // 执行的条件必须是n与i不等,若相等则分解结束了
			if(n % i == 0) { // 若能整除则i为n的因子之一
				printf("%d * ", i); // 输出因子
				n = n / i; // 找到了一个因子i,则n/i缩小n继续寻找
			} else {
				break; // 不能整除则跳出本次循环,递增i进行下一轮
            }
		}
	}
	printf("%dn", n); // 最后剩下的n不能整除i,所以它也为因子之一,所以最后输出
	return 0;
}
编写程序,输入年份和月份,判断是否闰年,什么季节以及该月有多少天
#include
 
int main(){
	int y,m,leap,season,days;
	printf("年份,月份");
	scanf("%d,%d",&y,&m);
	if((y%4==0&&y%100!=0) ||(y%400==0))
	leap==1;
	else
	leap=0;
	if(m>=3&&m<=5)
	season=1;
	else if(m>=6&&m<=8)
	season=2;
	else if(m>=9&&m<=12)
	season=3;
	else season=4;
	switch(m){
		case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=31;break;
		case 4:case 6:case 9:case 11:days=30;break;
		case 2:if(leap=1) days=29;else days=28;
	} 
	printf("%d年%S闰年n",y,(leap==1?"是":"不是"));
	printf("该季节是:");
	switch(season){
		case 1:printf("春季");break;
		case 2:printf("夏季");break;
		case 3:printf("秋季");break;
		case 4:printf("冬季");break;
	} 
	printf("当月天数:%dn",days);
	return 0;
}


#include 
#define MONTHS 13
int main()
{
	int days[MONTHS] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	int i, year, month, d, sum = 0;
	do {
		printf("Input a data:");
		scanf("%d%d%d", &year, &month, &d);
	} while (month < 1 || month > 12);
	for (i = 1; i < month; i++)
	{
		sum += days[i];
	}
	if ((year % 4 == 0 && year % 100 != 0 || year % 400 == 0) && (month >= 3))
		sum += d + 1;
	else
		sum += d; printf("The number of days is %dn", sum);
	return 0;
}
编写程序,根据用户输入的三角形的三边长判定是何种三角形,对于有效三角形,求出面积
#include
#include
int main(){
	float a,b,c;
	float s,area;
	printf("a,b,c=");
	scanf("%f,%f,%f",&a,&b,&c);
	if(a+b>c&&a+c>b&&b+c>a){
		s=(a+b+c)/2;
		area=sqrt(s*(s-a)*(s-b)*(s-c));
		printf("三角形的面积为area=%fn",area); 
		if(a==b&&b==c){
			printf("等边三角形n"); 
		}
		if(a==b||b==c||a==c)printf("等腰三角形n");
		else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf("直角三角形n"); 
	}else{
		printf("不能组成三角形n");
	}
	return 0;
}
编写一个程序将十进制数n转化为二进制数,要求从低位到高位输出二进制数的各位
#include
#include
int main(){
	int n,i=0;
	printf("n=");
	scanf("%d",&n);
	printf("对应的二进制数为:n");
	while(n){
		printf("%d",n%2);
		n=n/2;
	}
	return 0;
}
编写一个层序,输入若干个整数,以-1标记输入结束,输出其中的最大数和最小数
#include
#include
int main(){
	int n,min,max,first=1;
	printf("输入数序n");
	while(1){
		scanf("%d",&n);
		if(n==-1)break;
		if(first){
			first=0;
			min=max=n;
		}else{
			if(max 
编写一个程序,输出菱形图案,第一行为一个字母A,第二行为三个字母B,依此类推 

①方法1:

#include
#include
int main(){
	char c;
	int i,j,k,n;
	printf("输入n:n");
	scanf("%d",&n);
	 c='A';
	 for(k=1;k<=n;k++){
	 	for(i=1;i<=n-k;i++)printf(" ");
	 	for(j=1;j<=k*2-1;j++)printf("%c",c);
	 	c++;
	 	printf("n");
	 }
	 for(k=1;k
	 	for(i=0;i0;j--)printf("%c",c);
	 	c++;
	 	printf("n");
	 }
	return 0;
}

②方法2:

#include
#include
int main(){
	char c;
	int i,j,k,n;
	printf("输入n:n");
	scanf("%d",&n);
	 c='A';
	 for(k=1-n;k<=n-1;k++){
	 	i=n-abs(k);
	 	for(j=1;j<=n-i+1;j++)
	 	printf(" ");
	 	for(j=1;j<=2*i-1;j++)
	 	printf("%c",c);
	 	printf("n");
	 	c++;
	 } 
	return 0;
}


//   *
//  ***
// *****
/
	printf("Please input a,b,c:n"); 
	scanf_s("%d%d%d", &a, &b, &c);    
	if (a > b)
		t = a > c ? a : c;
	else
		t = b > c ? b : c;
	printf("最大的数%d", t);
	return 0;
}
在厨王争霸赛中,有12个评委为现场厨师打分,满分100。每位厨师最后得分是:去掉一个最高分和一个最低分,求其余得分的平均值。请编写一个程序实现
#include
int main() {

	double judges[12];
	int i = 0;
	while (i < 12)
	{
		printf("请输入第%d个评委分数n", i + 1);
		scanf_s("%lf", &judges[i]);
		i++;
	}
	double maxscore = judges[0];
	double minscore = judges[0];

	for (i = 1; i < 12; i++)
	{
		if (maxscore < judges[i]) maxscore = judges[i];
		if (minscore > judges[i]) minscore = judges[i];

	}

	double all = 0, avg = 0;

	for (i = 0; i < 12; i++)
	{
		all += judges[i];
	}
	all = all - maxscore - minscore;

	avg = all / 10.0;
	printf("最高分%.2f,最低分%.2f,最后得分是%.2f", maxscore, minscore, avg);

	return 0;
}
猴子摘了一堆桃,第一天吃了一半,还嫌不过瘾,又吃了一个;第二天又吃了剩下的一半,然后又多吃了一个;以后每天如此。到第10天,猴子一看只剩下一个了。问最初有多少个桃子?
#include
int main() {

	int i, s = 1; //s 是剩余的桃子数
	for (i = 0; i < 9; i++)//因为到第十天还剩一个,所以循环9次
	{
		s = (s + 1) * 2;//倒序求出每天的数量
	}
	printf("The first day:%dn", s);//输出结果

	return 0;
}
问77777的约数中最大的三位数是多少?==>287 555555->777
#include
int main() {
	int i,n, y;
	printf("Input n:");
	scanf_s("%d", &n);

	for (i = 100; i <= 999; i++)
	{
		if (n % i == 0)
		{
			y = i;
		}
	}
	printf("最大的三位数是:%d", y);

	return 0;
}
求77的23次方的最后三位数(mod操作)
#include
int main() {
	int i, x, y, z = 1;
	printf("请输入两个数,x和y(x^y):n");
	scanf_s("%d%d", &x, &y);       
	for (i = 1; i <= y; i++)
		z = z * x % 1000;            
	if (z >= 100) {
		printf("%d^%d的最后三位是:%dn", x, y, z);  
	}
	else
	{
		printf("%d^%d的最后三位是:0%dn", x, y, z);  
	}

	return 0;
}

杨辉三角形
#include 
#define N 10
int main()
{
	int i, j, a[N][N] = { 0 };
	for (i = 0; i < N; i++)
		a[i][0] = 1;
	for (i = 1; i < N; i++)
		for (j = 1; j <= i; j++)
			a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
	for (i = 0; i < N; i++) {

		for (j = 0; j < N - i; j++)
			printf("   ");
		for (j = 0; j <= i; j++)
			printf("%6d", a[i][j]);
		printf("n");
	}
	return 0;
}
编程求1!+3!+5!+7!+…+19!
#include
int main() {
	int i, j = 1;
	float sum = 0.0;
	for (i = 1; i < 20; i++)
	{
		j *= i;
		if (i % 2 == 0)
		{
			continue;
		}
		sum += j;
	}

	printf("sum=%.2fn", sum);
	return 0;
}
输入n个数,求其最大数,最小数和平均值
#include
int main() {
	int i, n, max, min, a;
	float s;
	printf("请输入有多少个数和第一个数值:");
	scanf_s("%d%d", &n, &a);
	s = max = min = a;
	for ( i = 1; i < n; i++)
	{
		scanf_s("%d", &a);
		s += a;
		if (max < a) max = a;
		if (min > a) min = a;
		
	}

	printf("max=%d,min=%d,avg=%f", max, min, s / n);
	return 0;
}
统计用数字0~9可以组成多少个没有重复数字的3位偶数
#include
int main() {
	int i, n = 0;
	int a, b, c;
	for (i = 100; i < 1000; i += 2)
	{
		a = i / 100;
		b = i / 10 % 10;
		c = i % 10;
		if (a != b && a != c && b != c)
			n++;
	}

	printf("%d", n);

	return 0;
}
若字符串为"baacda",执行后程序为"baaaacdaa"
#include
int main()
{
	char  s[20] = "baacda", c[20];
	int i, k = 0;
	for (i = 0; s[i] != ''; i++)
	{
		c[k++] = s[i];
		if (s[i] == 'a')
		{
			c[k++] = s[i];
		}
	}
	c[k] = '';
	puts(c);
	return 0;
}
编一程序, 将字符串的第m个字符开始的全部字符复制到另一个字符串中。 要求在主函数中输入字符串及m值并输出结果,在被调用函数中完成复制
#include
int main()
{
	char str1[20], str2[20];
	int i, j = 0, m;
	printf("请输入字符串:");
	gets(str1);
	printf("从第几个字符复制:");
	scanf_s("%d", &m);

	i = m - 1;
	while (str1[i] != '')
	{
		str2[j++] = str1[i++];
	}

	for (i = 0; i < j; i++)
	{
		printf("%c ", str2[i]);
	}
	return 0;
}
求1到n的阶乘和公式为sum = 1! + 2! + … + n!
#include
int main()
{
	int i, j = 1, n;
	int sum = 0;
	printf("请输入n的值:");
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		j *= i;
		sum += j;
	}
	printf("结果为:%dn", sum);
	return 0;
}
将a数组中的内容按颠倒的次序重新存放
#include 
#define N 9
void main()
{
	int a[N], i, t;
	for (i = 0; i < N; i++)
		scanf_s("%d", &a[i]);
	for (i = 0; i < N; i++)
		printf("%4d", a[i]);
	printf("n");
	for (i = 0; i < N / 2; i++)
	{
		t = a[i];
		a[i] = a[N - i - 1];
		a[N - i - 1] = t;
	}
	for (i = 0; i < N; i++)
		printf("%4d", a[i]);
}
输入n个数用冒泡排序将其升序排列
#include 
#define N 10
void main()
{
	int a[N] = { 1,9,8,6,45,78,3,2,5,98 }, i, j, t;
	//printf("请输入10个数:");
	//for (i = 0; i < N; i++)
	//	scanf_s("%d", &a[i]);

	for (i = 0; i < N; i++)
		printf("%4d", a[i]);
	printf("n");
	//冒泡排序
	for (i = 0; i < N - 1; i++)
	{
		for (j = 0; j < N - 1 - i; j++)
		{	//> 是升序  <是降序
			if (a[j] > a[j + 1]) {
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
		}
	}
	for (i = 0; i < N; i++)
		printf("%4d", a[i]);
}
在有序的数列中插入任意一个数,是插入后仍然有序
#include
#define N 10
int main() {
	int a[N + 1] = { 1,2,3,5,7,8,10,15,20,25 }, i, j, t, k, x;
	//printf("请输入10个数:");
	//for (i = 0; i < N; i++)
	//	scanf_s("%d", &a[i]);

	for (i = 0; i < N; i++)
		printf("%4d", a[i]);
	printf("n");
	//冒泡排序
	for (i = 0; i < N - 1; i++)
	{
		for (j = 0; j < N - 1 - i; j++)
		{	//> 是升序  <是降序
			if (a[j] > a[j + 1]) {
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
		}
	}
	for (i = 0; i < N; i++)
		printf("%4d", a[i]);

	printf("n请输入你要插入的数");
	scanf_s("%d", &x);
	k = 0;
	while (x > a[k])
		k++;
	for (i = N - 1; i >= k; i--)
		a[i + 1] = a[i];
	a[k] = x;
	for (i = 0; i <= N; i++)
		printf("%4d", a[i]);
	return 0;
}
现需运输200吨货物。已知大卡车运8吨,中型卡车运4吨,微型车运2吨,试编程统计共有多少种配车方案?
#include 
void main()
{
	int a = 8, b = 4, c = 2, i, j, z, sum = 0;
	for (i = 0; i < 200 / 8; i++)
		for (j = 0; j < 200 / 4; j++)
			for (z = 0; z < 200 / 2; z++)
				if (((i * a) + (j * b) + (z * c)) == 200)
					sum++;
	printf("%d", sum);
}
随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
#include 
#include 
#include 
void main()
{
	int a[20], i, max, min, sum;
	srand((unsigned)time(NULL)); //防止随机数每次重复 使用这个函数要导入time.h头文件
	a[0] = rand() % 41 + 10;
	max = min = sum = a[0];

	for (i = 1; i < 20; i++)
	{
		a[i] = rand() % 41 + 10;
		if (max < a[i])max = a[i];
		if (min > a[i])min = a[i];
		sum += a[i];
	}
	for (i = 0; i < 20; i++)
		printf("%d ", a[i]);
	printf("n最大值max=%dn最小值min=%dn平均值avg=%.2fn各元素之和sum==%d", max, min, sum / 20.0, sum);
}
矩阵a转置矩阵b的形式

​ [1 2 5] [9 7 6]
​ a=|3 4 8| a = |8 4 3|
​ [6 7 9] [5 2 1]

100 200 300
400 500 600
700 800 900

转置矩阵是:
100 400 700
200 500 800
300 600 900

#include 
int main() {
	int i, j, k, a[3][3] = { 1,2,5,3,4,8,6,7,9 };
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%3d", a[i][j]);
		}
		printf("n");
	}
	printf("n");
	for (i = 0; i < 3; i++)
	{
		k = a[0][i];
		a[0][i] = a[2][i];
		a[2][i] = k;
	}
	for (i = 0; i < 3; i++)
	{
		k = a[i][0];
		a[i][0] = a[i][2];
		a[i][2] = k;
	}

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%3d", a[i][j]);
		}
		printf("n");
	}
	return 0;
}

//第二题
#include 
int fun(int array[3][3]) {
	int i, j, t;
	for (i = 0; i < 2; i++)
	{
		for (j = i + 1; j < 3; j++)
		{
			t = array[i][j];
			array[i][j] = array[j][i];
			array[j][i] = t;
		}
	}
}
int main() {
	int i, j, array[3][3] = { {100,200,300},{400,500,600},{700,800,900} };
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%7d", array[i][j]);
		}
		printf("n");
	}
	fun(array);
	printf("转置矩阵是:n");

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%7d", array[i][j]);
		}
		printf("n");
	}
	return 0;
}
百钱百鸡 公鸡5元一只,母鸡3元一只,小鸡1元三只,要买一百只鸡,且包含公鸡母鸡小鸡,输出所有可能方案
#include
int main() {
	int i, j, k;
	for (i = 0; i <= 20; i++)
	{
		for (j = 0; j <= 33; j++)
		{
			for (k = 0; k <= 99; k += 3)
			{
				if (5 * i + j * 3 + k / 3 == 100)
				{
					if (i + j + k == 100)
					{
						printf("公鸡:%d,母鸡:%d,小鸡:%dn", i, j, k);
					}
				}
			}
		}
	}

	return 0;
}

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
#include
int main() {

	int N, a;
	scanf_s("%d", &N);
	a = N % 5;
	if (a <= 3 && a > 0)
		printf("打鱼 day %d", N);
	else
		printf("晒网 in day %d", N);
	return 0;
}
abcedf edfabc 前三个字符换到后面
#include 
#include 
void move(char* a) {
	char* p = a;
	int n = strlen(a), i;
	if (n <= 3)
	{
		return;
	}
	for (i = 0; i < 3; i++)
	{
		*(a + n + i) = *(a + i);
	}
	p = a + 3;
	while (*p)
	{
		*a++ = *p++;
	}
	*a = '';
}
int main() {
	char str[20] = "abcedf";
	move(str);
	printf("%s", str);
	return 0;
}
输入一个正整数,要求:

①求出它是几位数
2分别输出每一位数字
③按逆序输出各位数字。
测试输入;
1234
预期输出:
1234为4位数
顺序输出为:1,2,3,4
逆序输出为:4,3, 2, 1

#include
#include
int len(int num) {
	int count = 0;
	while (num > 0)
	{
		num /= 10;
		count++;
	}
	return count;
}
//顺序
void outputs1(int num) {
	if (num > 9) {
		outputs1(num / 10);
	}
	printf("%d", num % 10);
}
//逆序
void outputs2(int num) {
	int n = 0;
	while (num > 0) {
		n = num % 10;
		num = num / 10;
		printf("%d ", n);
	}
}

int main()
{
	int num;
	printf("测试输入:n");
	scanf_s("%d", &num);
	printf("预期输出:n");
	printf("%d为%d位数n", num, len(num));
	printf("顺序输出为:");
	outputs1(num);
	printf("n逆序输出为:");
	outputs2(num);
}
选择排序
#include
int main()
{
	int i, j, temp, a[10] = { 1,3,2,10,5,8,7,6,9,4 };
	int* p;
	p = a;
	
	for (i = 0; i < 9; i++) {
		int min = i;
		for (j = i + 1; j < 10; j++)
		{
			if (a[j] < a[min])
				min = j;
		}
		temp = a[min];
		a[min] = a[i];
		a[i] = temp;

	}
	for (i = 0; i < 10; i++)
	{
		printf("%dt", a[i]);
	}

	return 0;
}

//方法二
#include
int main()
{
	int i, j, temp, a[10] = { 1,3,2,10,5,8,7,6,9,4 };
	for (i = 0; i < 9; i++)//循环9次是因为最后一个数不用排序
	{
		int min = i; //把当前循环第一个数当成最小的的数
		for (j = i + 1; j < 10; j++)
		{
			if (a[min] > a[j])
			{
				min = j; //标记本次循环最小的数
			}
		}//利用标记的数与本次循环的i进行交换
		temp = a[min];
		a[min] = a[i];
		a[i] = temp;
	}//打印输出
	for (i = 0; i < 10; i++)
	{
		printf("%dt", a[i]);
	}

	return 0;
}
删除一维数组中重复的元素
#include
int main()
{
	int a[15] = { 1,1,1,2,2,2,3,3,3,4,4,4,5,6,7 }, * s = a;
	int b = 1, i;
	for (int i = 1; i < 15; ++i) {
		if (*(s + i - 1) != *(s + i)) {  // 当前元素与前一个元素进行比较,如果相同,则调到下一个,否则b+1
			*(s + b) = *(s + i);
			b++;
		}
	}
	for (i = 0; i < b; i++)
	{
		printf("%d", a[i]);
	}

	return 0;
}
礼炮
#include
int gbs(int n, int m);
int main()
{
	printf("%d", 3 * 21 - gbs(5, 6) - gbs(6, 7) - gbs(5, 7));

	return 0;
}
//n是几秒响一次,m是几秒响一次
int gbs(int n, int m) {
	int i, count = 0;
	for (i = 1; i <= 21; i++)
	{
		if (n * i % m == 0) count++;

	}

	return count;
}
编写函数,输入一个字符串(<40个字符),要求输出这个字符串每个字符,每两个字符之间空一个空格。
#include
void Insert(char *s,char *q)
{

	while(*s){
		*q++=*s;
		*q=' ';
		q++;
		s++;
	}
	*q='';
}
 
int 
main()
{
	char s[100];
	char q[100];
	printf("Please input s:");
	gets(s);
	Insert(s,q);
	printf("the new string:%s", q);
	return 0;
}


//方法二
#include
#include
void Insert(char *p)
{
	int i;
	
	for (i = strlen(p); i > 0; --i)
	{
		*(p + 2 * i) = *(p + i);
		*(p + 2 * i - 1) = ' ';
	}
}
 
int 
main()
{
	char s[100];
	printf("Please input s:");
	gets(s);
	Insert(s);
	printf("the new string:%s", s);
	return 0;

}

如输入“ABC”,应输出:A B C”

#include
#include
void Insert(char *p)
{
	int i;
	
	for (i = strlen(p); i > 0; --i)
	{
		*(p + 2 * i) = *(p + i);
		*(p + 2 * i - 1) = ' ';
	}
}
 
int 
main()
{
	char s[100];
	printf("Please input s:");
	gets(s);
	Insert(s);
	printf("the new string:%s", s);
	return 0;

}


//方法二
#include
void Insert(char *s,char *q)
{

	while(*s){
		*q++=*s;
		*q=' ';
		q++;
		s++;
	}
	*q='';
}
 
int 
main()
{
	char s[100];
	char q[100];
	printf("Please input s:");
	gets(s);
	Insert(s,q);
	printf("the new string:%s", q);
	return 0;
}

验证一个大于等于6偶数总能表示为两个素数之和
int fact(int n) {
	int i;
	if (n < 2) {
		return 0;//这里用0和1方便判断真假
	}
	else if (n) {
		return 1;
	}
	else {
		for (i = 2; i <= n / 2; i++)
		{
			if (n % i) return 0;
		}
		return 1;
	}
}
#include
int main() {
	int n, i;
	printf("请输入一个大于六的整数,在这里我们要求哥德巴赫猜想:");
	scanf("%d", &n);
	if (n < 6) {
		printf("error!n");
	}
	else {
		for (i = 3; i <= n / 2; i = i + 2) {
			if (fact(i) == 1 && fact(n - i) == 1) {
				printf("%d =%d + %dn", n, i, n - i);
			}
		}
	}
	return 0;
}
两个乒乓球队进行比赛,各出三人。甲队为a, b, c三人,乙队为x, y, z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x, z比,请编程序找出三队赛手的名单。
#include 
int main()
{
	char a, b, c; //a,b,c的对手是 a b c
	for (a = 'x'; a <= 'z'; a++)
	{
		for (b = 'x'; b <= 'z'; b++)
		{
			if (a != b)                         // a和b的对手不能相同
			{
				for (c = 'x'; c <= 'z'; c++)
				{
					if ((a != c) && (b != c))  //a和c的对手不能相同,b和c的对手也不能相同
					{
						if ((a != 'x') && (c != 'x') && (c != 'z'))  //根据题目中a和c说的话进行排除
						{
							printf("a——%cnb——%cnc——%cn", a, b, c);
						}
					}
				}
			}
		}
	}
	return 0;
}
500间的全部素数,同时求其和。(只能被1和这个数自身整除的数叫素数)
#include
#include
int main() {
	//n被除数,k除数的最大值,i除数,m统计质数的个数
	int n, k, i, m = 0, sum = 0;
	for (n = 2; n <= 500; n++)
	{
		k = sqrt(n);
		for (i = 2; i <= k; i++)
		{
			if (n % i == 0)
			{
				break;
			}
		}
		if (i > k)
		{
			printf("%4d", n);
			sum += n;
			m++;
			if (m % 10 == 0)		//每10个换一行
			{
				printf("n");
			}
		}
	}
	printf("nsum=%dn", sum);

	return 0;
}
找出二维数组a中的最大元素,并要求输出该元素以及该元素的行号和列号,二维数组元素可以从键盘输入也可以定义时直接赋初值。
#include
#define ROW 3
#define COL 3
int main() {

	int a[][3] = { 1,2,3,4,5,6,7,8,9 };
	int max = a[0][0];
	int maxRow = 0, maxCol = 0;
	for (int i = 0; i < ROW; i++)
	{
		for (int j = 0; j < COL; j++) {
			if (a[i][j] > max)
			{
				max = a[i][j];
				maxRow = i;
				maxCol = j;
			}
		}
	}
	printf("max=%d maxRow=%d maxCol=%d", max, maxRow, maxCol);

	return 0;
}
打印菱形

​ A
​ BBB
​ CCCCC
DDDDDDD
EEEEEEEEE
FFFFFFF
​ GGGGG
​ HHH
​ I

#include
void main() {
	char c = 'A';
	int i, j, k, n;
	scanf("%d", &n);
	printf("对应的菱形n");
	//正三角形
	for (i = 1; i <= n; i++)
	{
		for (j = 0; j < n - i; j++) {
			printf(" ");
		}
		for (j = 0; j < 2 * i - 1; j++) {
			printf("%c", c);
		}
		c++;  //单独出来避免c在循环里一直++
		printf("n");
	}
    //反三角形
	for (i = n - 1; i >= 1; i--)
	{
		for (j = n - i; j > 0; j--) {
			printf(" ");
		}
		for (j = 2 * i - 1; j > 0; j--) {
			printf("%c", c);
		}
		c++;
		printf("n");
	}
}





//方法二
#include
void main() {
	char c = 'A';
	int i, j, k, n;
	scanf("%d", &n);
	printf("对应的菱形n");

	for (k = 1 - n; k <= n - 1; k++)
	{
		i = n - abs(k);
		for (j = 1; j <= n - i + 1; j++) {
			printf(" ");
		}
		for (j = 1; j <= 2 * i - 1; j++) {
			printf("%c", c);
		}
		c++;
		printf("n");
	}

}
编写一个程序,求分数序列2/1 、3/2 、 5/3 、 8/5 、 13/8 、 21/13 、…的前50项的和
#include
void main() {
	double sum = 0;
	int x = 1, y = 2, i, temp;
	for (i = 1; i <= 50; i++)
	{
		sum += (double)y / x;
		temp = x;
		x = y;
		y = temp + y;
	}
	printf("%.2f", sum);
}

//方法二
#include//头文件 
int main()//主函数 
{
  int i;//定义整型变量,用于for循环 
  double a=2,b=1,sum=0,temp;//定义双精度浮点型变量 
  for(i=1;i<=20;i++)//for循环 
  {
    sum=sum+a/b;//分母为前面的分子和分母之和 
    temp=a;
    a=a+b;
    b=temp;//分子为前面的分母 
  }
  printf("sum=%7.7fn",sum);//输出和 
  return 0;//主函数返回值为0 
}
下面程序的功能是:查找n在数组a中最后一次出现的位置(数组首元素的位置为零)

例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0,当n=5时,程序的输出结果为:5isNo.3。当n=10时,程序的输出结果应为:10notfound!。

#include
void main() {
	int a[10] = { 1,5,2,5,6,8,7,4,3,0 };
	int i, k = 0, n, f = 0;
	scanf("%d", &n);
	for (i = 0; i < 10; i++)
	{
		if (a[9 - i] == n) {
			f = 1;
			k = 9 - i;
			break;
		}
	}
	if (f)
	{
		printf("%disNo.%d", n, k);
	}
	else {
		printf("%dnotfound!", n);
	}

}
输入一行字符,单词之间用一个空格分隔,统计其中有多少个单词
#include
int main() {
	char str[50];
	int i = 0, num = 0, flag = 0;
	printf("请输入一行字符:");
	gets(str);
	for (i = 0; str[i] != ''; i++) {
		if (str[i] == ' ')  //判断字符是否为空格,是赋值为0
			flag = 0;
		else {
			if (flag == 0)  //判断flag是否等于0  flag = 0就是遇到空格的时候 1是字母
			{
				num++;      //单词的个数加1
				flag = 1;
			}
		}
	}
	printf("单词的个数是:%d", num);
}
求一维数组a中的最小元素及其下标。

例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9,程序的输出应为Theminis:1,posis:0。数组a可直接在代码中赋值。

#include
void main() {
	int a[] = { 1,4,2,7,3,12,5,34,5,9 };
	int i, min = a[0], pos = 0;
	for (i = 1; i < sizeof(a) / sizeof(int); i++)
	{
		if (min > a[i])
		{
			min = a[i];
			pos = i;
		}
	}
	//printf("最小的值是%d,下标是%d", min, pos);
	printf("Theminis:%d,posis:%d。", min, pos);
}
已知一个圆的半径为r(r是一个可变的量),求圆的面积和周长
#include
#define PI 3.1415926
int main() {
	float r, area, s;
	printf("请输入圆的半径r=");
	scanf("%f", &r);
	area = PI * r * r;
	s = 2 * PI * r;
	printf("圆的面积是%f,周长是%f", s, area);
    
	return 0;
}
下列给定程序中函数m的功能是:求出s所指字符串中最后一次出现的所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到则函数值为NULL。

例如当字符串中的内容为“abcdabfabcdx”,t中内容为“ab”时输出结果应是“abcdx”。当字符串中的内容为“abcdabfabcdx”,t中内容为“abd”时,则程序输出未找到信息“not be found!”。请改正程序中的错误.使它能得出正确的结果。

#include  
#include  
char* fun(char* s, char* t)
{
	char* p, * r, * a;
	a = NULL;
	while (*s)
	{
		p = s;   r = t;
		while (*r)
			if (*r == *p)
			{
				r++;  p++;
			}
			else  break;
		if (*r == '') a = s;
		s++;
	}
	return  a;
}

int main()
{
	char   s[100], t[100], * p;
	printf("nPlease enter string S :");
	scanf("%s", s);
	printf("nPlease enter substring t :");
	scanf("%s", t);
	p = fun(s, t);
	if (p)  printf("nThe result is :  %sn", p);
	else      printf("nNot found !n");

	return 0;
}
编写程序,实现输入一行字符串s,分别统计其中英文字母、空格、数字和其他字符的个数
#include 
int main() {
	int letter = 0, space = 0, digit = 0, other = 0;
	char c;

	while ((c = getchar()) != 'n')
	{
		if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'))
			letter++;
		else if (c == ' ')
			space++;
		else if ('0' <= c && c <= '9')
			digit++;
		else
			other++;
	}
	printf("英文字母:%dn空格:%dn数字:%dn其它字符:%dn", letter, space, digit, other);
    
	return 0;
}
编程题有2个字符数组s1,s2,请把s1中的存在的s2字符删除

例如s1为"abcaa63akdfk",s2为"ayk5",程序运行后输出:bc63df。

#include 
int main() {
	int i, j, k;
	char s1[] = "abcaa63akdfk";
	char s2[] = "ayk5";
	for (int i = 0; s1[i] != ''; i++) {
		for (j = 0; s2[j] != ''; j++) {
			if (s1[i] == s2[j]) {
				for (int k = i; s1[k] != ''; k++) { //巧妙运用字符串’’
					s1[k] = s1[k + 1]; //后面的值将前面的值进行覆盖掉
				}
			}
		}
	}

	puts(s1);
    
	return 0;
}
输出1到100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积12大于数字之和8。
#include
int main()
{
	int k, s, m, n;
	for (n = 1; n <= 100; n++)
	{
		k = 1, s = 0;
		m = n;
		while (m)
		{
			k = k * (m % 10); // 积
			s = s + (m % 10); //和
			m = m / 10;
		}
		if (k > s) // 比较
			printf("%d ", n);
	}
	return 0;
}
输入20个整数,用一维数组存储,请编程求其中最大值和次大值并输出。
//方法一
#include
#define N 20
void main() {

	int i, j, a[N], max1, max2;
	for ( i = 0; i < N; i++)
	{
		scanf("%d", &a[i]);
	}
	//打擂台法求最大值,大的当擂主
	max1 = a[0];
	for ( i = 1; i < N; i++)
	{
		if (a[i] > max1) {
			max1 = a[i];
			j = i;//提取擂主的下标
		}
	}
	for ( i = j; i < N-1; i++)
	{
		a[i] = a[i + 1];//后面一个数覆盖擂主的数,去除擂主
	}
	//继续打擂,求次大值
	max2 = a[0];
	for (i = 1; i < N-1; i++)
	{
		if (a[i] > max2) {
			max2 = a[i];
		}
	}
	printf("最大值%d,次大值%d",max1, max2);
}

//方法二
#include
#define N 20
void main() {

	int i, j, a[N],t;
	for (i = 0; i < N; i++)
	{
		scanf("%d", &a[i]);
	}
	//使用冒泡排序但是只排序两次 就是把最大的和次大的放后面
	for (i = 0; i < 2; i++)
	{
		for ( j = 0; j < N-1-i; j++)
		{
			if (a[j] > a[j+1]) {
				t = a[j];
				a[j] = a[j + 1];
				a[j+1] = t;
			}
		}
	}
	
	printf("最大值%d,次大值%d", a[N-1], a[N-2]);
}
有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号
#include
int main()
{
	int n, member[10], count = 0, temp;
	int i = 0;
	printf("Input number of person:n=");
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
		member[i] = i + 1;//把人员编号存进去
	temp = n;
	while (n > 1)//1234
	{
		if (member[i] != 0)
			count++;
		if (count == 3)
		{
			member[i] = 0;
			count = 0;
			n--; //1234 1204 1004 1
		}
		i++;// 不能放在member[] 里面 
		//printf("temp:%dn",temp);temp的值并不会随着n的自减而自减 
		if (i == temp)
			i = 0;//temp = n 是为了让剩余的继续按着123 编号报数  ,
				//编号4报了数1 是不是该让编号为1 的人报数 那是不是下标就要指向0 ,因为member [0]=1
	}
	for (int i = 0; i < temp; i++)
	{
		if (member[i] != 0)
			printf("The last one is %d", member[i]);
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997016.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号