前言
总题数量52道,其中有很多相似的题目,用于前期学习练手还是挺不错的哦。我提供的解法不一定是最优的,只是提供一种解法,不提供解法思路。如有错误请私聊或者评论联系我进行更正!
1、求100之内自然数中最大的能被17整除的数。
方法一:
#include <stdio.h> #define NUM 17 int main() { int i = 0; for(i = 100; 0 != i % NUM; i--) { ; } printf("100之内自然数中最大能被17整除的数为:%d\n", i); return 0; }
方法二:
int main() { printf("%d\n", 100 / 17 * 17); return 0; }
2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。
#include <stdio.h> int main() { int i = 0;//循环体的计数器 int j = 0; int k = 0; for(i = 0; i < 10; i++) { for(j = 0; j < 10; j++) { for(k = 0; k < 10; k++) { if(1333 == i * 100 + j * 10 + k + k * 100 + j * 10 + i) { printf("a = %d, b = %d, c = %d\n", i, j, k); } } } } return 0; }
3、计算并输出200-400之间不能被3整除的整数的和 [200, 400)
#include <stdio.h> int main() { int sum = 0; int i = 0; for (i = 200; i < 400; i++) { if (0 != i % 3) { sum += i; //printf("i = %d\n", i); } } printf("[200,400)之间不能被3整除的整数之和为:%d\n", sum); return 0; }
4、从键盘输入10个数,统计非负数的个数,并计算非负数的和
#include <stdio.h> int main() { int number = 0; int count = 0; int sum = 0; int i = 0; printf("请输入十个整型数字:"); for (i = 0; i < 10; i++) { scanf("%d", &number); if (number > 0) { count++; sum += number; } } printf("非负数的个数为:%d, 非负数的和为:%d\n", count, sum); return 0; }
5、求125之内自然数中偶数之和。
#include <stdio.h> #define NUM 125 int main() { int i = 0; int sum = 0; for (i = 1; i < NUM; i++) { if (0 == i % 2) { //printf("i = %d\n", i); sum += i; } } printf("125之内的偶数之和为:%d\n", sum); return 0; }
6、输入5个数,求和并输出。要求编写求和的函数。
#include <stdio.h> #define COUNT 5 int sum(); int main() { int num = sum(); printf("和为:%d\n", num); return 0; } int sum() { int number = 0; int i = 0; int s = 0; for (i = 0; i < COUNT; i++) { scanf("%d", &number); s += number; } return s; }
7、编程计算1 * 2 * 3+3 * 4 * 5+5 * 6 * 7+…+99 * 100 * 101的值。
#include <stdio.h> int main() { int sum = 0; int i = 0; for (i = 1; i < 100; i += 2) { sum += i * (i + 1) * (i + 2); } printf("和为:%d\n", sum); return 0; }
8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。
#include <stdio.h> int main() { char ch = ' '; scanf("%c", &ch); while('\n' != ch) { if('a' == ch) { ch = '*'; } printf("%c", ch); scanf("%c", &ch); } printf("\n"); return 0; }
9、编写程序,将一个一维数组的元素逆序存放并输出。例如,原顺序为1,2,3,4,5,逆序后为5,4,3,2,1。
#include <stdio.h> #include <stdlib.h> #define SIZEMAX 5 int main() { int* n = (int*)malloc(sizeof(int) * SIZEMAX); int i = 0; for (i = 0; i < SIZEMAX; i++) { n[i] = i + 1; } //输出数组原始内容 printf("数组原始内容:"); for (i = 0; i < SIZEMAX; i++) { printf("%d ", n[i]); } //交换 for (i = 0; i < SIZEMAX / 2; i++) { int tmp = n[i]; n[i] = n[SIZEMAX - i - 1]; n[SIZEMAX - i - 1] = tmp; } //循环输出 printf("\n数组被修改后的内容:"); for (i = 0; i < SIZEMAX; i++) { printf("%d ", n[i]); } printf("\n"); return 0; }
10、求3行3列矩阵a[3][3]={1,2,3,4,5,6,7,8,9}非对角线上元素之和。
#include <stdio.h> int main() { int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int sum = 0; int i = 0; int j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (i != j && 3 != i + j + 1) { sum += a[i][j]; } } } printf("非对角线之和为:%d\n", sum); return 0; }
11、编程判断输入的整数的正负性和奇偶性。如果为正数,输出z;如果为负数,输出f;如果为偶数,输出o;如果为奇数,输出j
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); if(n > 0) { printf("z"); } else { printf("f"); } if(0 == n % 2) { printf("o"); } else { printf("j"); } printf("\n"); return 0; }
12、计算并输出1-200之间不能被5整除的整数的和。
#include <stdio.h> int main() { int sum = 0; int i = 0; for (i = 1; i < 200; i++) { if (0 != i % 5) { sum += i; } } printf("和为:%d\n", sum); return 0; }
13、从键盘输入n和a的值,计算a+aa+aaa+…+aa…a(n个a)的值。
#include <stdio.h> int main() { int n = 0; int a = 0; long int sum = 0; int i = 0; long int tmp = 0; printf("请输入n的值:"); scanf("%d", &n); printf("请输入a的值:"); scanf("%d", &a); tmp = a; for(i = 0; i < n; i++) { //printf("%d\n", tmp); sum += tmp; tmp = tmp * 10 + a; } printf("结果为:%ld\n", sum); return 0; }
14、输入5个数,求它们中最大值和平均值并输出。
#include <stdio.h> #include <limits.h> int main() { int max = INT_MIN; double avg = 0; int n[5]; int i = 0; int sum = 0; for (i = 0; i < 5; i++) { scanf("%d", &n[i]); sum += n[i]; if (n[i] > max) { max = n[i]; } } avg = sum / 5.0; printf("最大值为:%d,平均值为:%.2lf\n", max, avg); return 0; }
15、输出所有200-400之间能被3整除且个位数字为6的整数。
#include <stdio.h> int main() { int i = 0; printf("能被3整除且尾数为6的数字有如下:\n"); for (i = 200; i < 400; i++) { if (0 == i % 3 && 6 == i % 10) { printf("%d ", i); } } printf("\n"); return 0; }
16、编写程序,将用户输入的字符串中所有的字符a去掉,然后输出剩余的字符。
#include <stdio.h> int main() { char str[100]; char tmp[100]; int i = 0; int j = 0; fgets(str, 100, stdin); while (str[i] != '\n') { if ('a' != str[i]) { tmp[j++] = str[i]; } i++; } tmp[j] = '\0'; fputs(tmp, stdout); printf("\n"); return 0; }
17、计算并输出200-400之间不能被7整除的整数的和。
#include <stdio.h> int main() { int i = 0; int sum = 0; for (i = 200; i < 400; i++) { if (0 != i % 7) { sum += i; } } printf("和为:%d\n", sum); return 0; }
18、计算并输出200-400之间不能被5整除的整数的和。
#include <stdio.h> int main() { int i = 0; int sum = 0; for (i = 200; i < 400; i++) { if (0 != i % 5) { sum += i; } } printf("和为:%d\n", sum); return 0; }
19、从键盘输入10个数,统计非正数的个数,并计算非正数的和。
#include <stdio.h> int main() { int count = 0; int sum = 0; int number = 0; int i = 0; while (i < 10) { scanf("%d", &number); if (number <= 0) { count++; sum += number; } i++; } printf("非正数的和为:%d,个数为:%d\n", sum, count); return 0; }
20、输入一串字符,将其中的大写字母变成对应的小写字母并输出。
#include <ctype.h> #include <stdio.h> int main() { char str[100]; int i = 0; fgets(str, 100, stdin); for (i = 0; str[i] != '\n'; i++) { putchar(tolower(str[i])); } printf("\n"); return 0; }
21、打印所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数。例如,153就是一个水仙花数,因为153=111+555+333。
#include <stdio.h> int main() { int i = 0; int j = 0; int k = 0; printf("水仙花数:\n"); for (i = 1; i < 9; i++) { for (j = 0; j < 9; j++) { for (k = 0; k < 9; k++) { if (i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k) { printf("%d\n", i * 100 + j * 10 + k); } } } } return 0; }
22、一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求当它第10次落地时,共经过了多少米,第10次反弹多高?
#include <stdio.h> int main() { double len = 100; int i = 0; double height = 0; for (i = 0; i < 10; i++) { height += len; len = len / 2.0; } printf("共经过了%.2lfm\n", height); printf("第10次反弹的高度为:%.2lfm\n", len); return 0; }
23、输出所有0-200之间能被3整除且个位数字为6的整数。
#include <stdio.h> int main() { int i = 0; printf("符合要求的有:"); for (i = 0; i < 200; i++) { if (0 == i % 3 && 6 == i % 10) { printf("%d ", i); } } printf("\n"); return 0; }
24、输入一个正整数,输出它的阶乘。
#include <stdio.h> int main() { int num = 0; int factorial = 1; int i = 1; printf("请输入一个正整数:"); if (scanf("%d", &num) && num <= 0) { printf("输入非法数据\n"); return -1; } for (i = 2; i < num + 1; i++) { factorial *= i; } printf("%d的阶乘为%d\n", num, factorial); return 0; }
25、编写程序,判断从键盘输入的字符中数字字符的个数、大写字母的个数、小写字母的个数及其它字符的个数,以*作为字符输入结束标志。
#include <stdio.h> #include <stdbool.h> #include <ctype.h> int main() { int dcount = 0;//数字 int ccount = 0;//大写字母 int lcount = 0;//小写字母 int rcount = 0;//其他字母 int i = 0; char ch = ' '; while (scanf("%c", &ch) && ch != '*') { if (isdigit(ch)) { dcount++; } else if (isupper(ch)) { ccount++; } else if (islower(ch)) { lcount++; } else { rcount++; } i++; } printf("数字个数:%d,大写字母个数:%d,小写字母个数:%d,其他字符个数:%d\n", dcount, ccount, lcount, rcount); return 0; }
26、编写程序,使用循环结构输出下列图形:
#include <stdio.h> int main() { int i = 0; int j = 0; for (i = 0; i < 5; i++) { for (j = 0; j < 4; j++) { printf("* "); } printf("\n\n"); } return 0; }
27、输入一串字符,逆序输出。要求使用数组实现。
#include <stdio.h> #include <string.h> int main() { char str[100]; fgets(str, 100, stdin); int len = strlen(str) - 1; while(len >= 0) { putchar(str[len]); len--; } printf("\n"); return 0; }
28、求1-1/2+1/3-1/4+…+1/99-1/100的值。
#include <stdio.h> int main() { int sign = -1; int i = 0; double sum = 0; for (i = 1; i <= 100; i++) { sign *= -1; sum += 1.0 / (i * sign); } printf("sum = %lf\n", sum); return 0; }