C语言 |
您所在的位置:网站首页 › c语言入门15道经典题目及答案大全 › C语言 |
目录: ===============================基础例题100道=============================== 1.输出 "Hello, World!" 2.输出整数 3.输出单个字符 4.输出浮点数 5. 输出双精度(double)数 6.两个整数相加 7. 两个浮点数相乘 8.字符转 ASCII 码 (1)一次读取长字符,并一个一个显示 ASCII 码 (2)ASCII 转 字符 9. 两数相除 10.数值比较 (1)比较两个数 (2)比较三个数 (3)比较两数从键盘输入: 11.计算字节大小 (1)计算 int, float, double 和 char 字节大小 (2)计算 long long, long double 字节大小 12.交换两个数的值 (1)使用临时变量 (2)不使用临时变量 (3)参考方法: 13.判断奇数/偶数 参考方法: 14.循环区间范围内的奇数/偶数 (1)循环输出指定区间范围的偶数 (2)循环输出指定区间范围的奇数 (3)使用按位与运算符判断奇偶数: (4)改写为设定区间和除数,返回可以整除的数 15.判断元音/辅音 (1)从键盘中输入的不是字母 (2)参考方法: (3)多个字符输入错误的问题: 16. 判断三个数中的最大数 (1)参考方法: (2)用三元表达式判断: (3)参考方法: 17.一元二次方程 输入的三个系数 a、b、c 的判断解的情况: 18.判断闰年 (1)方法二 (2)方法三 19. 判断正数/负数 方法二 20.判断字母 方法二:三元运算符 21.计算自然数的和 (1)使用 for (2) 使用 while (3)使用递归 (4)首尾相加 22.输出九九乘法口诀表 方法二:递归实现方式 23.斐波那契数列 (1)方法一:输出指定数量的斐波那契数列 (2)方法二:输出指定数字前的斐波那契数列 24.求两数的最大公约数 (1)方法一:使用 for 和 if (2)方法二:使用 while 和 if (3)方法三:适用正数和负数 (4)方法四:使用递归 (5)方法五:用辗转相除法 (6)求两个数的最大公约数: 25.求两数最小公倍数 (1)方法一:使用 while 和 if (2)方法二:通过最大公约数计算 (3)实例编写: 26.阶乘 (1)方法一: (2)方法二:使用递归 27. 循环输出26个字母 (1)循环输出 26 个字母 (2)输出大写或小写字母 (3)参考: (4)参考方法: 28.判断数字为几位数 参考方法: 29.计算一个数的 n 次方 (1)方法一: 使用 while (2)方法二:使用 pow() 函数 (3)方法三:递归 (4)参考方法: 30.判断回文数 参考方法: 31.判断素数 (1) (2)判断两个数之间的素数 (3)使用函数判断两数间的素数 (4)用sqrt降低时间复杂度 32.判断Armstrong数(阿姆斯壮数) (1) (2)两数之间的 Armstrong 数 (3) 使用函数判断Armstrong 数 (4)参考方法: (5)两数之间的 Armstrong 数: 33.求一个整数的所有因数 寻找两数的所有公因数: 34.创建各类三角形图案 (1)创建三角形图案 (2)使用数字 (3) 使用字母 (4)倒三角形 (5) 倒三角形数字 (6)金字塔 (7)数字金字塔 (8)倒金字塔 (9)杨辉三角 (10)弗洛伊德三角形 (11)数字金字塔1: (12)数字金字塔2: 35.表格形式输出数据 (1)将 1~100 的数据以 10x10 矩阵格式输出 (2)等差数列输出 10x10 矩阵格式 (3)乘法运算格式 (4)将 1~100 的数据以 10x10 格式顺序输出 36.实现简单的计算器 (1)实现加减乘除计算 (2)豪华版计算器 37.计算一个数是否可为两个素数之和 38.二进制与十进制相互转换 (1)二进制转换为十进制 (2)十进制转换为二进制 (3)参考方法: 39.八进制与十进制相互转换 (1) 十进制转换为八进制 (2)八进制转换为十进制 (3)任意进制转换 40. 八进制与二进制相互转换 (1)二进制转换为八进制 (2)八进制转换为二进制 (3)分别定义函数实现八进制转二进制 41.字符串翻转 (1)字符串翻转 (2)参考方法1: (3)参考方法2: (4)参考文档: 42.计算数组元素平均值 (1)实例 1 (2)实例 2用户自定义输入: (3)用 scanf 的特性来控制循环: 43.输出数组 (1)使用 for 循环输出数组: (2)使用 for 循环逆向输出数组: 44.计算数组元素之和 45.查找数组中最大的元素值 (1)查找数组中最大的元素值 (2)用户自定义输出: (3)三元运算符应用求最大: 46. 查找数组中最小的元素 47. 数组拆分与合并 (1)将一个数组拆分为一个为奇数数组,一个为偶数数组: (2)将奇数数组与偶数数组合并为一个数组: 48.数组拷贝 (1)将一个数组复制给另外一个数组: (2)值传递与地址传递的区别: (3)参考方法: 49.计算标准偏差 50.两个矩阵相加 (1)使用多维数组将两个矩阵相加 (2)矩阵相乘实例 51.矩阵转换 52.使用指针访问数组元素 53.使用引用循环替换数值 54.判断最大值 判断最大值 55.删除字符串中的特殊字符 (1)删除字符串中的除字母外的字符 (2)参考方法: 56.连接字符串 (1)使用 strcat() 连接两个字符串 (2)参考方法: (3)指针方法: 57. 计算字符串长度 (1)使用 strlen() (2)不使用 strlen() 58.查找字符在字符串中出现的次数 59.字符串中各种字符计算 60.字符串复制 (1)使用 strcpy() (2) 不使用 strcpy() 61.字符串排序 62.使用结构体(struct) (1)使用结构体(struct)存储学生信息 (2)两种不同对齐方式下计算 sizeof(struct) 63.复数相加 64.计算两个时间段的差值 65.将字符串写入文件 举例:非常简单的字符串写入文件 66.从文件中读取一行 (1)从文件中读取一行 (2)从文件中读取多行,学会使用 fgets 函数1 (3)从文件中读取多行,学会使用 fgets 函数2 67.输出当前文件执行代码 68.约瑟夫生者死者小游戏 69. 五人分鱼 ===============================进阶例题100道=============================== 1.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2.企业发放的奖金根据利润提成 (1)优化如下: (2)使用循环优化代码的适用性: (3)利用 switch 的击穿现象 3.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 4.输入某年某月某日,判断这一天是这一年的第几天? 5.输入三个整数x,y,z,请把这三个数由小到大输出 6.用*号输出字母C的图案 7.输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 8.输出9*9口诀 9.要求输出国际象棋棋盘 10.打印楼梯,同时在楼梯上方打印两个笑脸 11.古典问题(兔子生崽) 12.判断101到200之间的素数 13.打印出所有的"水仙花数" 14.将一个正整数分解质因数 15.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示 16.最大公约数和最小公倍数 17.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 18.:求s=a+aa+aaa+aaaa+aa...a的值 19.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数 20.小球自由下落 21.猴子吃桃问题 22.两个乒乓球队进行比赛,各出三人 23.打印出如下图案(菱形) 24.:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和 25.求1+2!+3!+...+20!的和 26.利用递归方法求5! 27.利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来 28.有5个人坐在一起,问第五个人多少岁? 29.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字 30.回文数 31.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母 32.删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母 33.判断一个数字是否为质数 34.练习函数调用 35.字符串反转,如将字符串 "www.runoob.com" 反转为 "moc.boonur.www" 36.求100之内的素数 37.对10个数进行排序 38.求一个3*3矩阵对角线元素之和 39.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中 40.将一个数组逆序输出 41.学习static定义静态变量的用法 42.学习使用auto定义变量的用法 43.学习使用static的另一用法 44.学习使用external的用法 45.学习使用register定义变量的方法 46.宏#define命令练习 47.宏#define命令练习2 48.宏#define命令练习3 49.#if #ifdef和#ifndef的综合应用 50.#include 的应用练习 51.学习使用按位与 & 52.学习使用按位或 | 53.学习使用按位异或 ^ 54.取一个整数 a 从右端开始的 4~7 位 55.学习使用按位取反~ 56.画图,学用circle画圆形 57.画图,学用line画直线(在TC中实现) 58.学用rectangle画方形(在TC中实现) 59.画图,综合例子(在TC中实现) 60.画图,综合例子2(在TC中实现) 61.杨辉三角形 62.学习putpixel画点,(在TC中实现) 63.画椭圆ellipse(在TC中实现) 64.利用ellipse and rectangle 画图(在TC中实现) 65.一个最优美的图案(在TC中实现) 66.输入3个数a,b,c,按大小顺序输出 67.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组 68.有 n个整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数 69.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 70.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度 71.编写input()和output()函数输入,输出5个学生的数据记录 72.创建一个链表 73.反向输出一个链表 74.连接两个链表 75.输入一个整数,并将其反转后输出 76.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) 77.填空练习(指向指针的指针) 78.找到年龄最大的人,并输出。请找出程序中有什么问题 79.字符串排序 80.海滩上原来最少有多少个桃子? 81.809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果 82.八进制转换为十进制 83.求0—7所能组成的奇数个数 84.一个偶数总能表示为两个素数之和 85.判断一个素数能被几个9整除 86.两个字符串连接程序 87.回答结果(结构体变量传递) 88.读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的 * 89.电话号码加密 90.专升本一题,读结果 91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.猜谜游戏 95.简单的结构体应用实例 96.计算字符串中子串出现的次数 97.从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止 98.从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。 输入的字符串以!结束 99.有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中 100.计算平均成绩 101.矩阵交换行 描述: 102.猴子吃桃问题 ===============================基础例题100道=============================== 1.输出 "Hello, World!" #include int main() { // printf() 中字符串需要引号 printf("Hello, World!"); return 0; }输出结果: Hello, World! 2.输出整数 #include int main() { int number; // printf() 输出字符串 printf("输入一个整数: "); // scanf() 格式化输入 scanf("%d", &number); // printf() 显示格式化输入 printf("你输入的整数是: %d", number); return 0; }使用 printf() 与 %d 格式化输出整数 输出结果: 输入一个整数: 45 你输入的整数是: 45 3.输出单个字符 #include int main() { char c; // 声明 char 变量 c = 'A'; // 定义 char 变量 printf("c 的值为 %c", c); return 0; }使用 printf() 与 %c 格式化输出一个字符 输出结果: c 的值为 A 4.输出浮点数 #include int main() { float f; // 声明浮点数变量 f = 12.001234; // 定义浮点数变量 printf("f 的值为 %f", f); return 0; }使用 printf() 与 %f 输出浮点数 输出结果: f 的值为 12.001234 5. 输出双精度(double)数 #include int main() { double d; // 声明双精度变量 d = 12.001234; // 定义双精度变量 printf("d 的值为 %le", d); return 0; }使用 printf() 与 %e 输出双精度数 输出结果: d 的值为 1.200123e+01 6.两个整数相加 #include int main() { int firstNumber, secondNumber, sumOfTwoNumbers; printf("输入两个数(以空格分割): "); // 通过 scanf() 函数接收用户输入的两个整数 scanf("%d %d", &firstNumber, &secondNumber); // 两个数字相加 sumOfTwoNumbers = firstNumber + secondNumber; // 输出结果 printf("%d + %d = %d", firstNumber, secondNumber, sumOfTwoNumbers); return 0; }使用 scanf() 来接收输入, printf() 与 %d 格式化输出整数 输出结果: 输入两个数(以空格分割): 1 2 1 + 2 = 3 7. 两个浮点数相乘 #include int main() { double firstNumber, secondNumber, product; printf("输入两个浮点数: "); // 用户输入两个浮点数 scanf("%lf %lf", &firstNumber, &secondNumber); // 两个浮点数相乘 product = firstNumber * secondNumber; // 输出结果, %.2lf 保留两个小数点 printf("结果 = %.2lf", product); return 0; }输入两个浮点数,计算乘积 输出结果: 输入两个浮点数: 1.2 2.345 结果 = 2.81 8.字符转 ASCII 码https://blog.csdn.net/liu17234050/article/details/104219239 #include int main() { char c; printf("输入一个字符: "); // 读取用户输入 scanf("%c", &c); // %d 显示整数 // %c 显示对应字符 printf("%c 的 ASCII 为 %d", c, c); return 0; }输出结果: 输入一个字符: a a 的 ASCII 为 97 (1)一次读取长字符,并一个一个显示 ASCII 码 #include #define MAX_STRING_LENGTH 65535 // 最大字符串长度 int main(){ char s[MAX_STRING_LENGTH]; printf("请输入长度小于 %d 的任意字符:",MAX_STRING_LENGTH); scanf("%s",s); // 读取字符串。 for(int i = 0; s[i]; i++){ printf("%c的ASCII:%d\t",s[i],s[i]); } } (2)ASCII 转 字符 #include #define MAX_ASCII 127 int main() { char num,enter; int temp=1; for(;temp>0;) { printf("----------------------------\n"); printf("|** 开始 **|\n"); printf("|**ASCII 转 字符 按:1 **|\n"); printf("|**字符 转 ASCII 按:2 **|\n"); printf("|** 结束 按:0 **|\n"); printf("----------------------------\n"); scanf("%d",&temp); if(temp==1) { printf("请输入数值小于 %d 的任意字符:",MAX_ASCII); scanf("%d",&num); printf("ASCII为 %d ,对应的字符为 %c \n",num,num); } if(temp==2) { printf("输入一个字符: \n"); scanf("%c", &enter); //回车键也算字符,所以这里使用其他变量替之. scanf("%c", &num); printf(" %c 的 ASCII 为 %d \n", num, num); } } return 0; } 9. 两数相除两数相除,如果有余数,输出余数 #include int main(){ int dividend, divisor, quotient, remainder; printf("输入被除数: "); scanf("%d", ÷nd); printf("输入除数: "); scanf("%d", &divisor); // 计算商 quotient = dividend / divisor; // 计算余数 remainder = dividend % divisor; printf("商 = %d\n", quotient); printf("余数 = %d", remainder); return 0; }输出结果: 输入被除数: 5 输入除数: 2 商 = 2 余数 = 1 10.数值比较 (1)比较两个数以下实例中定义了两个整数变量,并使用 if 来比较两个数值,可以先看下逻辑图: #include int main() { int a, b; a = 11; b = 99; // 也可以通过以下代码实现让用户在终端输入两个数 // printf("输入第一个值:"); // scanf("%d", &a); // printf("输入第二个值:"); // scanf("%d", &b); if(a > b) printf("a 大于 b"); else printf("a 小于等于 b"); return 0; }输出结果: a 小于等于 b (2)比较三个数以下实例中定义了两个整数变量,并使用 if 来比较三个数值,可以先看下逻辑图: #include int main() { int a, b, c; a = 11; b = 22; c = 33; if ( a > b && a > c ) printf("%d 最大", a); else if ( b > a && b > c ) printf("%d 最大", b); else if ( c > a && c > b ) printf("%d 最大", c); else printf("有两个或三个数值相等"); return 0; }输出结果: 33 最大 (3)比较两数从键盘输入: #include int main() { int a,b; printf("请输入俩个整数以空格隔开: \n"); scanf("%d %d",&a,&b); // 从键盘输入两个数 if(a>b){ printf("%d>%d\n",a,b); } else { printf("%d_ "); for(loop = 0; loop < 10; loop++) printf(" %d", array[loop]); printf("\n 偶数 -> "); for(loop = 0; loop < e; loop++) printf(" %d", even[loop]); printf("\n 奇数 -> "); for(loop = 0; loop < d; loop++) printf(" %d", odd[loop]); return 0; }输出结果: 原始数组 -> 0 1 2 3 4 5 6 7 8 9 偶数 -> 0 2 4 6 8 奇数 -> 1 3 5 7 9 (2)将奇数数组与偶数数组合并为一个数组: #include int main() { int array[10]; int even[5] = {0, 2, 4, 6, 8}; int odd[5] = {1, 3, 5, 7, 9}; int loop, index, e_len, o_len; e_len = o_len = 5; index = 0; for(loop = 0; loop < e_len; loop++) { array[index] = even[loop]; index++; } for(loop = 0; loop < o_len; loop++) { array[index] = odd[loop]; index++; } printf("\n偶数 -> "); for(loop = 0; loop < e_len; loop++) printf(" %d", even[loop]); printf("\n奇数 -> "); for(loop = 0; loop < o_len; loop++) printf(" %d", odd[loop]); printf("\n合并后 -> "); for(loop = 0; loop < 10; loop++) printf(" %d", array[loop]); return 0; }输出结果: 偶数 -> 0 2 4 6 8 奇数 -> 1 3 5 7 9 合并后 -> 0 2 4 6 8 1 3 5 7 9 48.数组拷贝 (1)将一个数组复制给另外一个数组: #include int main() { int original[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; int copied[10]; int loop; for(loop = 0; loop < 10; loop++) { copied[loop] = original[loop]; } printf("元素数组 -> 拷贝后的数组 \n"); for(loop = 0; loop < 10; loop++) { printf(" %2d %2d\n", original[loop], copied[loop]); } return 0; }输出结果: 元素数组 -> 拷贝后的数组 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 0 0 (2)值传递与地址传递的区别: #include "stdio.h" int ArrayCopy(char* ori, char* cop, char Length) { char loop; for(loop = 0; loop < Length; loop++) { *cop++ = *ori++; } return 0; } int main() { char original[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; char *copiedOne=original; char copiedTwo[10]; char loop; char Length; Length = sizeof(original); printf("元素数组 -> 拷贝后的数组 \n"); for(loop = 0; loop < sizeof(original); loop++) { printf(" %2d %2d\n", original[loop], copiedOne[loop]); } ArrayCopy(original,copiedTwo, Length); copiedTwo[9] = 20; printf("值传递:\n"); printf("值传递更改数据后,只有拷贝的数组中的元素被更改: \n"); printf("元素数组 -> 拷贝后的数组 \n"); for(loop = 0; loop < sizeof(original); loop++) { printf(" %2d %2d\n", original[loop], copiedTwo[loop]); } copiedOne[9] = 50; printf("地址传递:\n"); printf("地址传递更改数据后,原数组元素与拷贝的数组中的元素同时被更改: \n"); printf("元素数组 -> 拷贝后的数组 \n"); for(loop = 0; loop < sizeof(original); loop++) { printf(" %2d %2d\n", original[loop], copiedOne[loop]); } return 0; } (3)参考方法: #include #include int main() { int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int *arrayPointer = (int*)calloc(sizeof(array) / sizeof(array[0]), sizeof(int)), i;//令指针指向一块新内存区,该内存区大小刚好可以容纳旧数组所有元素 for ( i = 0; i < sizeof(array)/sizeof(array[0]); i++) *arrayPointer++ = array[i]; *arrayPointer = '\0';//为新数组手动添上结束标记 arrayPointer -= sizeof(array) / sizeof(array[0]);//指针归首位 printf("元素数组 -> 拷贝后的数组 \n"); for (i = 0; i < sizeof(array) / sizeof(array[0]); i++) printf("%5d%13d\n",array[i],arrayPointer[i]); return 0; } 49.计算标准偏差 #include #include float calculateSD(float data[]); int main() { int i; float data[10]; printf("输入10个元素: "); for(i=0; i < 10; ++i) scanf("%f", &data[i]); printf("\n标准偏差 = %.6f", calculateSD(data)); return 0; } float calculateSD(float data[]) { float sum = 0.0, mean, standardDeviation = 0.0; int i; for(i=0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |