两个月的坚持,终不负所望,希望我自己写的题库能为你们寻求一些帮助(针对湖北专升本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; }
#includeint 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键盘输入5个学生姓名,找出并输出字典排序最前面的学生姓名。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; }
#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数字转字符串 列如483字符串“483”#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; }
#include验证一个大于等于6偶数总能表示为两个素数之和#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]); }
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输入一个大写字母,输出字母表中它前面的字母和后面的字母。如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。#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; }
#includeSn=a+aa+aaa+…+a…a的值,其中a是一个数字,n表示a的位数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; }
#include一球从100m高度自由落下,每次落地后反跳会原来高度的一半,再落下。求它第10次落地时,共经过多少米?第10次反弹多高?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; }
#include编写一个函数void fun(char *ss),它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。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)
{
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已知某公司员工的基本工资为800元,绩效工资按每月工程利润提成(profit),利润提成比例(d)如下,编写程序计算员工工资。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; }
#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编写一个程序将十进制数n转化为二进制数,要求从低位到高位输出二进制数的各位#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; }
#include编写一个层序,输入若干个整数,以-1标记输入结束,输出其中的最大数和最小数#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; }
#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;i 0;j--)printf("%c",c); c++; printf("n"); } return 0; } ②方法2:
#include在厨王争霸赛中,有12个评委为现场厨师打分,满分100。每位厨师最后得分是:去掉一个最高分和一个最低分,求其余得分的平均值。请编写一个程序实现#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; } #include猴子摘了一堆桃,第一天吃了一半,还嫌不过瘾,又吃了一个;第二天又吃了剩下的一半,然后又多吃了一个;以后每天如此。到第10天,猴子一看只剩下一个了。问最初有多少个桃子?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; } #include问77777的约数中最大的三位数是多少?==>287 555555->777int 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; } #include求77的23次方的最后三位数(mod操作)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; } #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编程求1!+3!+5!+7!+…+19!#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; } #include输入n个数,求其最大数,最小数和平均值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; } #include统计用数字0~9可以组成多少个没有重复数字的3位偶数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; } #include若字符串为"baacda",执行后程序为"baaaacdaa"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; } #include编一程序, 将字符串的第m个字符开始的全部字符复制到另一个字符串中。 要求在主函数中输入字符串及m值并输出结果,在被调用函数中完成复制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; } #include求1到n的阶乘和公式为sum = 1! + 2! + … + n!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; } #include将a数组中的内容按颠倒的次序重新存放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; } #include输入n个数用冒泡排序将其升序排列#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]); } #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现需运输200吨货物。已知大卡车运8吨,中型卡车运4吨,微型车运2吨,试编程统计共有多少种配车方案?#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; } #include随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。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); } #include矩阵a转置矩阵b的形式#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); } [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百钱百鸡 公鸡5元一只,母鸡3元一只,小鸡1元三只,要买一百只鸡,且包含公鸡母鸡小鸡,输出所有可能方案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; } #include中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?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; } #includeabcedf edfabc 前三个字符换到后面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; } #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编写函数,输入一个字符串(<40个字符),要求输出这个字符串每个字符,每两个字符之间空一个空格。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; } #includevoid 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验证一个大于等于6偶数总能表示为两个素数之和#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; } 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两个乒乓球队进行比赛,各出三人。甲队为a, b, c三人,乙队为x, y, z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x, z比,请编程序找出三队赛手的名单。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; } #include500间的全部素数,同时求其和。(只能被1和这个数自身整除的数叫素数)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; } #include找出二维数组a中的最大元素,并要求输出该元素以及该元素的行号和列号,二维数组元素可以从键盘输入也可以定义时直接赋初值。#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; } #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编写一个程序,求分数序列2/1 、3/2 、 5/3 、 8/5 、 13/8 、 21/13 、…的前50项的和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"); } } #include下面程序的功能是:查找n在数组a中最后一次出现的位置(数组首元素的位置为零)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 } 例如:如果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求一维数组a中的最小元素及其下标。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中的元素为:1,4,2,7,3,12,5,34,5,9,程序的输出应为Theminis:1,posis:0。数组a可直接在代码中赋值。
#include已知一个圆的半径为r(r是一个可变的量),求圆的面积和周长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); } #include下列给定程序中函数m的功能是:求出s所指字符串中最后一次出现的所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到则函数值为NULL。#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; } 例如当字符串中的内容为“abcdabfabcdx”,t中内容为“ab”时输出结果应是“abcdx”。当字符串中的内容为“abcdabfabcdx”,t中内容为“abd”时,则程序输出未找到信息“not be found!”。请改正程序中的错误.使它能得出正确的结果。
#include编写程序,实现输入一行字符串s,分别统计其中英文字母、空格、数字和其他字符的个数#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; } #include编程题有2个字符数组s1,s2,请把s1中的存在的s2字符删除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; } 例如s1为"abcaa63akdfk",s2为"ayk5",程序运行后输出:bc63df。
#include输出1到100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积12大于数字之和8。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; } #include输入20个整数,用一维数组存储,请编程求其中最大值和次大值并输出。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; } //方法一 #include有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号#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]); } #includeint 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]); }



