C语言经典例题目解析

合集下载

各种C语言经典例题,讲解,免费

各种C语言经典例题,讲解,免费
1.输入两个正整数,m和n,求其最大公约数和最小公倍数。
#include<stdio.h>
void main()
{
int hcf(int,int); /*函数声明*/
int lcd(int,int,int); /*函数声明*/
int u,v,h,l;
printf("Please input two numbers:\n");
for(i=0;i<=3;i++)
{
for(j=0;j<=6;j++)
printf("%c",picture[i][j]);
printf("\n");
}
}
9.打印以下图案:
*
**
***
****
#include<stdio.h>
void main()
while((r=u%v)!=0)
{u=v;v=r;}
return(v);
}
int lcd(int u,int v,int h)
{
return(u*v/h);
}
2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
#include<stdio.h>
int letter,digit,space,others;
sum+=stu[i].score[j];
stu[i].avr=sum/2;
average+=stu[i].avr;
}
average/=N;
printf(" Name score1 score2 average\n");

C语言算法经典习题及其答案详解

C语言算法经典习题及其答案详解

C语言算法经典习题及其答案详解C语言是一门广泛应用于计算机科学和工程领域的编程语言。

在学习C语言的过程中,算法是一个重要的部分。

通过进行算法习题的练习,不仅可以加深对C语言的理解,还可以提高编程能力。

本文将介绍一些经典的C语言算法习题,并提供详细的答案解析。

一、习题一:求两个数的和题目描述:给定两个整数,要求编写程序计算它们的和,并输出结果。

解析:这是一个非常简单的题目,只需要使用加法运算符即可完成。

示例代码如下:```#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);int sum = num1 + num2;printf("它们的和是:%d\n", sum);return 0;```二、习题二:计算阶乘题目描述:给定一个正整数n,计算n的阶乘,并输出结果。

解析:阶乘的计算需要使用循环结构。

我们可以使用for循环从1到n逐个相乘,得到n的阶乘。

示例代码如下:```#include <stdio.h>int main() {int n;printf("请输入一个正整数:");scanf("%d", &n);int factorial = 1;for (int i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘是:%d\n", n, factorial);return 0;}三、习题三:判断一个数是否为素数题目描述:给定一个正整数n,判断它是否为素数,并输出结果。

解析:素数的定义是只能被1和自身整除的数。

我们可以使用循环进行判断,若n能被2到n-1之间的任何一个数整除,则说明它不是素数;否则,它是素数。

C语言编程实例100题(带解析适合新手超经典)

C语言编程实例100题(带解析适合新手超经典)

C语言程序实例100个(一)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

C语言经典习题实例及讲解

C语言经典习题实例及讲解

8 10 16 20 27
while(str[i]!='\0')
{ nc=str[i];
if(nc!=' '&& pc==' ') num++;
t h e i s d o \0
pc=nc; i++;
}
printf("\nThe number of words is:%d",num);
num=3
}
程 序 示 例(六)
例6 将一个数插入到升序的数列中,使插入后的数列仍然有 序。
printf("Input %d number:\n",N); for (i=0;i<N;i++) scanf("%d",&array[i]); printf("\n"); for (i=0;i<N-1;i++) { k=i;
for (j=i+1;j<N;j++) if(array[j]<array[k]) k=j; if (i!=k)
is:a[%d][%d]=%d\n",i,c,a[i][c]); i++; } if(find==0)printf("not been found"); }
18 12 19 13 79 65 52 38 63 88 71 49
rmax= 19 find=1
运行结果: The matrix is: 18 12 19 13 79 65 52 38 63 88 71 49 The saddle pointer is: a[0][2]=19

c语言习题及详解答案

c语言习题及详解答案

c语言习题及详解答案C语言习题及详解答案C语言作为一种广泛应用的编程语言,对于程序员来说是必备的基础知识。

在学习C语言的过程中,练习习题是非常重要的,可以帮助我们更好地理解语言的特性和使用方法。

本文将为大家提供一些常见的C语言习题及详解答案,希望对大家的学习有所帮助。

1. 编写一个程序,输出"Hello, world!"。

```c#include <stdio.h>int main() {printf("Hello, world!\n");return 0;}```解析:这是一个非常简单的程序,使用printf函数输出字符串"Hello, world!",并在末尾加上换行符"\n"。

2. 编写一个程序,计算两个整数的和并输出结果。

```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("它们的和是:%d\n", sum);return 0;}```解析:这个程序使用scanf函数从用户输入中获取两个整数,然后计算它们的和并输出结果。

3. 编写一个程序,判断一个数是否为素数并输出结果。

```c#include <stdio.h>int isPrime(int n) {if (n <= 1) {return 0;}for (int i = 2; i * i <= n; i++) {if (n % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}```解析:这个程序定义了一个函数isPrime,用于判断一个数是否为素数。

c语言经典习题及答案

c语言经典习题及答案

c语言经典习题及答案C语言经典习题及答案C语言是一门广泛应用于计算机科学领域的编程语言,具有简洁、高效的特点。

作为一名学习C语言的学生或者程序员,经典习题的练习是非常重要的。

本文将介绍几个C语言的经典习题,并给出相应的答案。

习题一:编写一个程序,判断一个整数是否为素数。

解答:素数是只能被1和自身整除的整数。

我们可以用一个循环来判断一个数是否为素数。

具体代码如下:```c#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i <= num / 2; i++) {if (num % i == 0) {return 0;}}return 1;int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}```习题二:编写一个程序,输入一个整数n,输出1到n之间所有的完数。

解答:完数是指除了它本身以外的所有因子之和等于它本身的数。

我们可以用一个循环来判断每个数是否为完数。

具体代码如下:```c#include <stdio.h>int isPerfectNumber(int num) {int sum = 0;for (int i = 1; i <= num / 2; i++) {if (num % i == 0) {sum += i;}}if (sum == num) {return 1;} else {return 0;}}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d到%d之间的完数有:", 1, n); for (int i = 1; i <= n; i++) {if (isPerfectNumber(i)) {printf("%d ", i);}printf("\n");return 0;}```习题三:编写一个程序,输入一个正整数n,输出n的阶乘。

C语言编程实例100题(带解析汇报适合新手超经典)

C语言编程实例100题(带解析汇报适合新手超经典)

C语言程序实例100个(一)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;bonus=bonus1+(i-100000)*0.;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

c语言经典例题

c语言经典例题

c语言经典例题C语言是一种通用的、面向过程的计算机编程语言,广泛应用于系统软件、应用软件、嵌入式软件等领域。

学习C语言的过程中,解决经典的例题是提高编程能力和深入理解语法规则的有效途径。

下面将介绍几个C语言的经典例题,通过解析这些例题,读者可以更好地掌握和运用C语言。

例题一:整数求和【题目描述】输入两个整数,计算它们的和并输出。

【示例】输入:53输出:8【思路分析】定义两个整型变量a和b,通过scanf函数从输入流中读取两个整数,并使用加法运算符将它们相加,最后使用printf函数输出计算结果。

【代码实现】```c#include <stdio.h>int main() {int a, b;scanf("%d", &a);scanf("%d", &b);int sum = a + b;printf("%d\n", sum);return 0;}```【题目解析】这个例题主要考察了C语言的基本输入输出操作以及算术运算符的应用。

通过读取用户输入的两个整数并将其相加,最后输出结果。

需要注意的是,整数求和的过程中不需要考虑溢出问题。

例题二:判断奇偶【题目描述】输入一个正整数,判断它是奇数还是偶数,并输出相应的提示信息。

【示例】输入:6输出:6是偶数【思路分析】定义一个整型变量num,通过scanf函数从输入流中读取用户输入的正整数。

然后,使用取余运算符判断num是否能被2整除。

如果余数为0,则num是偶数;否则,num是奇数。

最后,使用printf函数输出判断结果。

【代码实现】```c#include <stdio.h>int main() {int num;scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;}```【题目解析】这个例题主要考察了C语言中的条件判断语句和取余运算符的应用。

c语言经典题目

c语言经典题目

C语言经典题目及解析C语言是一门广泛应用于操作系统、嵌入式系统以及游戏开发等领域的编程语言。

熟练掌握C语言的基础知识对于程序员而言至关重要。

在学习C语言时,经典题目的练习和解析是帮助提高编码能力和理解语法以及算法的重要途径。

本文将介绍几个经典的C语言题目,并提供相应的解析。

1. 两数之和题目描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

int* twoSum(int* nums, int numsSize, int target, int* returnSize) { int* result = (int*)malloc(2 * sizeof(int));*returnSize = 0;for (int i = 0; i < numsSize - 1; i++) {for (int j = i + 1; j < numsSize; j++) {if (nums[i] + nums[j] == target) {result[0] = i;result[1] = j;*returnSize = 2;return result;}}}return result;}解析:该题可以使用两层循环来解决,外层循环遍历数组中的每个元素,内层循环从外层循环的下一个元素开始,依次计算两个元素的和,如果和等于目标值,则返回这两个元素的下标。

通过动态分配内存来存储结果,使用参数returnSize来返回结果数组的长度。

2. 阶乘计算题目描述:求一个非负整数的阶乘。

int factorial(int n) {if (n == 0) {return1;}return n * factorial(n - 1);}解析:该题可以使用递归来解决。

当输入为0时,返回1,否则递归调用函数本身并将结果乘以n,得到n的阶乘。

3. 反转字符串题目描述:给定一个字符数组,将其反转。

void reverseString(char* s, int sSize) {int left = 0;int right = sSize - 1;while (left < right) {char temp = s[left];s[left] = s[right];s[right] = temp;left++;right--;}}解析:该题使用双指针法来解决,定义两个指针left和right分别指向数组的首尾元素。

c语言题库及答案详解

c语言题库及答案详解

c语言题库及答案详解C语言题库及答案详解C语言,作为一种广泛使用的编程语言,以其高效、灵活和跨平台的特性,在软件开发、系统编程等领域占据着重要地位。

为了帮助学习者更好地掌握C语言,本文将提供一些常见的C语言题目及其详细解答。

1. 基础语法题- 题目:请编写一个C程序,输出"Hello, World!"。

- 答案:以下是一个简单的C程序示例,用于输出"Hello,World!"。

```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 变量与数据类型题- 题目:声明一个整型变量`a`,初始化为10,并打印其值。

- 答案:在C语言中,可以使用`int`关键字来声明整型变量。

以下是实现题目要求的代码。

```c#include <stdio.h>int main() {int a = 10;printf("The value of a is: %d\n", a);return 0;}```3. 控制结构题- 题目:编写一个程序,判断输入的年份是否为闰年。

- 答案:闰年的判断规则是:如果年份能被4整除但不能被100整除,或者能被400整除,则该年为闰年。

```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```4. 数组与循环题- 题目:编写一个程序,求一个整数数组中所有元素的和。

C语言经典习题及其答案详解

C语言经典习题及其答案详解

C 语言经典习题及其答案详解第二章基本数据类型和表达式2.1 单项选择题1.下列字符列中,可以作为“字符串常量”的是()① ABC ②“ABC“ ③‘abc’ ④‘a’ 「解」C 程序中,一个字符率常量是表示一个字符序列,书写时,用双引号字符前后括住这个字符序列。

所以只有“ABC”是一个正确的字符率常量,其余都不是。

其中,ABC 可作为标识符,字符列‘abc’不能出现在C 程序中,‘a’是一个字符常量。

所以解答是②。

2.在以字节存储字符的系统中,‘\n ’在内存占用的字节数是()①1 ②2 ③3 ④4「解」一般来说,一个字符在内存中只占 1 个字节,‘\n’是转义字符,其意义是换行符,它作为一个字符存储,在内存也只占1 个字节。

所以解答是①。

3.字符串“xyz”在内存占用的字节数是()①3 ②4 ③6 ④8「解」字符串中的每个字符占 1 个字节,但 C 程序在存储字符串时,要在后一个有效字符后面接上1 个字符串结束的标记符‘\0’。

这样,存储字符串常量“xyz”需要 4 个字节。

所以解答是②。

4.在以下字符列中,合法的长整型常数是()① 0L ② 4962710 ③ 0.054838743 ④2.1869el0「解」为表示不同范围的整数,整型数据分短整型、基本型和长整型,并对三种整型内部表示的高位的不同理解,又分别分成无符号和带符号两种。

若要明确指明一个整数是长整型的,必须在整数之后接上字符‘L’。

所以0L 是一个长整型的整型常量,而4962710 是基本整型数据,而对于用 2 个字节表示一个基本整型数据的系统来说,该整数将因超出范围而是一个错误的整数;0.054839743 和2.1869el0 都是double 型的实数。

所以解答是①。

5.一个char 型数据,它的值在内存中存放的是()①ASCll 代码值②BCD 代码值③内码值④ 十进制代码值「解」计算机存储字符,通常是存储字符的某种代码值。

C语言算法经典习题及其答案详解

C语言算法经典习题及其答案详解

break; if(i>k) return 1; else return 0; } 五、排序问题 1、选择法排序(升序) 基本思想: 1)对有 n 个数的序列(存放在数组 a[n]中),从中选出最小的数,与第 1 个数交 换位置; 2)除第 1 个数外,其余 n-1 个数中选最小的数,与第 2 个数交换位置; 3)依次类推,选择了 n-1 次后,这个数列已按升序排列。 程序代码如下: #include<stdio.h> #include<math.h> #define N 10 void main() { int i,j,imin,s,a[N]; printf("input 10 numbers:"); for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) { imin=i; for(j=i+1;j<N;j++) if(a[imin]>a[j]) imin=j; if(i!=imin) 6 { s=a[i]; a[i]=a[imin]; a[imin]=s; } } for(i=0;i<N;i++) printf("%4d",a[i]); printf("\n"); } 2、冒泡法排序(升序) 基本思想:(将相邻两个数比较,小的调到前头) 1)有 n 个数(存放在数组 a(n)中),第一趟将每相邻两个数比较,小的调到前头,
printf("please input the second array:"); for(i=0;i<10;i++) scanf("%d",&b[i]); ia=0; ib=0; ic=0; while(ia<10&&ib<10) { if(a[ia]<b[ib]) { c[ic]=a[ia]; ia++; } else { c[ic]=b[ib]; ib++; } ic++; } while(ia<=9) { c[ic]=a[ia]; ia++; ic++; } 8 while(ib<=9) { c[ic]=b[ib]; ib++; ic++; } for(i=0;i<20;i++) printf("%2d",c[i]); printf("\n"); } 六、查找问题 1、顺序查找法(在一列数中查找某数 x) 基本思想:一列数放在数组 a[1]---a[n]中,待查找的数放在 x 中,把 x 与 a 数组 中的元素从头到尾一一进行比较查找。用变量 p 表示 a 数组元素下标,p 初值为 1,使 x 与 a[p]比较,如果 x 不等于 a[p],则使 p=p+1,不断重复这个过程;一旦 x 等于 a[p]则退出循环;另外,如果 p 大于数组长度,循环也应该停止。 程序代码如下:

C语言典型例题解读

C语言典型例题解读

2.寻找特殊偶数成绩10 开启时间2014年11月4日星期二08:00折扣0.8 折扣时间2014年11月19日星期三08:00允许迟交否关闭时间2014年11月26日星期三08:00背景有一种特殊偶数,它每一位上的数字都两两不相同。

我们现在需要找出四位数中某一区间内的这类偶数。

输入所要寻找的四位偶数的范围。

每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。

如果输入遇到0,输入结束。

输出列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.3000 3020✪2.6040 6090✪3.0 0✪以文本方式显示1.3012 3014 3016 3018 ✪2.counter=4✪3.6042 6048 6052 6054 6058 60726074 6078 6082 6084 ✪4.counter=10✪1秒64M测试用例2以文本方式显示1.9 101✪2.87 -1✪3.0 0✪以文本方式显示1.Error✪2.Error✪1秒64M0 Code:#include<stdio.h>int main(){int maxnum, minnum, n, g, s, b, q, count = 0;while(1){scanf("%d%d",&minnum,&maxnum);if(minnum == 0 && maxnum == 0) return 0;if((minnum > 999 && minnum < 10000) && (maxnum > 999 && maxnum < 10000) && (maxnum >= minnum)){for(n = minnum; n <= maxnum; n++){if(n % 2 == 0){q = n / 1000;b = n % 1000 / 100;s = n % 100 / 10;g = n % 10;if(q != b && q != s && q != g && b != s && b != g && s != g){count++;printf("%d ",n);}}}printf("\n");printf("counter=%d\n",count);count = 0;}elseprintf("Error\n");}return 0;}3.求最小m 值求满足下列不等式的最小m。

c语言程序设计编程题库及详解答案

c语言程序设计编程题库及详解答案

c语言程序设计编程题库及详解答案1. 编写一个C语言程序,实现两个整数的加法运算。

答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum);return 0;}```2. 编写一个C语言程序,实现求一个数的阶乘。

答案:```c#include <stdio.h>int factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d 的阶乘是:%d\n", num, factorial(num)); return 0;}```3. 编写一个C语言程序,实现判断一个数是否为素数。

答案:```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1) return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d 是素数。

C语言试题(答案带解析)

C语言试题(答案带解析)

C语言试题(答案带解析)题目:编写一个C语言程序,实现以下功能:1. 输入一个字符串,长度不超过100个字符。

2. 统计并输出字符串中字母、数字、空格和其他字符的数量。

3. 删除字符串中所有的空格,并输出处理后的字符串。

4. 查找字符串中第一次出现字母 'a' 的位置,并输出位置(位置从0开始计算)。

5. 检查字符串是否为回文(忽略大小写和空格),如果是,输出"Yes",否则输出"No"。

试题代码如下:```c#include <stdio.h>#include <string.h>#include <ctype.h>int main() {char str[101];int alpha_count = 0, digit_count = 0,space_count = 0, other_count = 0;int i, a_position = -1;int len, is_palindrome = 1;// 输入字符串printf("Enter a string (up to 100 characters): ");fgets(str, 101, stdin);// 删除换行符len = strlen(str);if (str[len - 1] == '\n') {str[len - 1] = '\0';len--;}// 统计字符数量for (i = 0; i < len; i++) {if (isalpha(str[i])) {alpha_count++;if (str[i] == 'a') {a_position = i;}} else if (isdigit(str[i])) {digit_count++;} else if (isspace(str[i])) {space_count++;} else {other_count++;}}// 输出字符数量printf("Letters: %d\n", alpha_count); printf("Digits: %d\n", digit_count); printf("Spaces: %d\n", space_count); printf("Others: %d\n", other_count); // 删除空格并输出处理后的字符串char new_str[101];int j = 0;for (i = 0; i < len; i++) {if (!isspace(str[i])) {new_str[j++] = str[i];}}new_str[j] = '\0';printf("String without spaces: %s\n", new_str);// 查找字母 'a' 的位置if (a_position != -1) {printf("First occurrence of 'a' is at position: %d\n", a_position);} else {printf("'a' not found in the string.\n");}// 检查字符串是否为回文int start = 0, end = j - 1;while (start < end) {if (tolower(new_str[start]) !=tolower(new_str[end])) {is_palindrome = 0;break;}start++;end--;}if (is_palindrome) {printf("Yes\n");} else {printf("No\n");}return 0;}```解析:1. 程序首先通过 `fgets` 函数读取用户输入的字符串,并检查是否有多余的换行符。

c语言题库及详解答案

c语言题库及详解答案

c语言题库及详解答案C语言是一门广泛应用的编程语言,以其强大的功能和灵活性而受到程序员的青睐。

下面,我将提供一些常见的C语言题目及其详解答案,以帮助学习者更好地理解和掌握C语言。

1. 基础语法题题目:编写一个C程序,输出“Hello, World!”。

答案:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 变量和数据类型题题目:声明一个整型变量`a`,赋值为10,并打印其值。

答案:```c#include <stdio.h>int main() {int a = 10;printf("%d\n", a);return 0;}```3. 条件语句题题目:编写一个程序,判断一个整数是否为偶数,并打印相应的信息。

答案:```c#include <stdio.h>int main() {int num;printf("Enter an integer: ");scanf("%d", &num);if (num % 2 == 0) {printf("%d is even.\n", num);} else {printf("%d is odd.\n", num);}return 0;}```4. 循环语句题题目:使用for循环打印1到10的整数。

答案:```c#include <stdio.h>int main() {for (int i = 1; i <= 10; i++) {printf("%d ", i);}printf("\n");return 0;}```5. 数组题题目:编写一个程序,找出一个整数数组中的最大值。

C语言典型例题答案详解解

C语言典型例题答案详解解

典型例题例1:求 main( ){ int i, sum;for (sum=0, i=1; i<=100; i++) sum=sum+i ;printf("1+2+3+…+100=%d \n",sum); } 1+2+3+…+100=5050 ∑=1001n n例2:计算1~5的阶乘main( ){ int i, fact;for(fact=1, i=1; i<=5; i++){ fact=fact*i;printf("\t%d!=%d\n", i, fact); }}1!=1 (每次循环都进行输出))2!=23!=64!=245!=120例3: 计算某班32位学生某门课的平均成绩,并输出最高分、最低分。

main( ){ int i, score, max=0, min=100;float sum=0;for(i=1;i<=32;i++){ scanf("%d", &score);sum=sum+score;if(score>max) max=score;if(score<min) min=score; }printf("average=%-8.2f\n", sum/32);printf("max=%d,min=%d\n", max, min);}例4:按下列形式打印乘法九九表i:11*1=12 2*1=2 2*2=43 3*1=3 3*2=6 3*3=94 4*1=4 4*2=8 4*3=12 4*4=16┇┇┇┇9 9*1=9 9*2=18 9*3=27 …… 9*9=81 j 1 2 3 9被乘数i取值1~9;i每取一值,乘数j取值1~imain( ){ int i, j, k;for(i=1; i<=9; i++){ for(j=1; j<=i; j++){ k=i*j;printf("%d*%d=%-4d", i, j, k); }printf(“\n”);}getch( ); /*加getch();每行暂停*/ }例5:输入5个最多8位的正整数,将各数按位颠倒输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、猴子吃桃子:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子第一天共摘了几个桃子#include <stdio.h>main(){int s=1,i;for(i=9;i>=1;i--)s=(s+1)*2;printf("s=%d\n",s); }2、鸡兔同笼:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。

问笼中各有几只鸡和兔?#include <stdio.h>main(){int a,b;for(a=1;a<=40;a++)/* 120只脚如果全是鸡的话60只,但是总头是40,所以循环到40 */ for (b=1;b<=30;b++) /* 同理如果全是兔的话最多120/4=30 所以循环到30 */{if((a==40-b)&&(a==60-2*b)) /* 同时满足总头数40总脚数120 */printf("There are %d chichens \nThere are %d rabbits",a,b);}}3、百钱买百鸡:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。

百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?#include <stdio.h>main( ){int cocks,hens,chicks;cocks=0;while(cocks<=19){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5*cocks+3*hens+chicks/3==100&&chicks%3==0)printf("%d,%d,%d\n",cocks,hens,chicks);hens=hens+1;}cocks=cocks+1;}}#include <stdio.h>main(){int x,y,z;for(x=0;x<=20;x++)for(y=0;y<=33;y++){z=100-x-y;if(15*x+9*y+z==300)printf("x=%d y=%d z=%d\n",x,y,z);}}4、百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?#include <stdio.h>void main(){int i,j,k,n;for(i=0;i<=33;i++) /*大马至多为100/3匹*/for(j=0;j<=50;j++) /*中马至多为100/2=50匹*/for(k=0;k<=100;k++){if((i+j+k==100) &&(3*i+2*j+k/2==100))printf("i=%d,j=%d,k=%d \n",i,j,k);}}5、打印Fibonacci数列(兔子数列)的前n项,每10个换一行。

Fibonacci数列中前两项为1,1,以后每一个数都是其前两个数之和。

如1,1,2,3,5,8,13,21,34,…。

#include<stdio.h>void main(){long f,f1,f2;int i,n;printf("Enter n : ");scanf("%d",&n);f1=1;f2=1;printf("%10d%10d",f1,f2);for(i=1;i<=n;i++){f=f1+f2;printf("%10d",f);f1=f2;f2=f;if(i%10==0)printf("\n");}}6、汉诺塔问题:有三根杆子A,B,C。

A杆上有若干碟子;每次移动一块碟子,小的只能叠在大的上面;把所有碟子从A杆全部移到C杆上。

7、打印下三角的九九乘法表#include <stdio.h>main(){int i,j;for(i=1;i<=9;i++){for(j=i;j<=9;j++)printf("%2d*%2d=%2d",i,j,i*j);printf("\n");}}8、输入n值,打印n行杨辉三角:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1#include<stdio.h>void main(){int i,j,n,k;printf("Enter n:");scanf("%d",&n);for(i=1;i<=n;i++){k=1;for(j=1;j<i;j++){printf("%3d",k);k=k*(i-j)/j;}//每次要打印的下一个数等于前一个数乘以其所在行数和列数的差在处以其列数printf("%3d",k);printf("\n");}}9.输出各种菱形图案:A 1A B A S S SA B C B A 2 2 2 2 2A B C D C B A S S S S S S SA B C D E D C B A 3 3 3 3 3 3 3 3 3A B C D C B A S S S S S S SA B C B A 2 2 2 2 2A B A S S SA 110、约瑟夫问题:n个人坐一圈,从1到n给每个人编号。

从s个人开始报数,数到第m个人,让他出局。

然后从出局后下一个人开始报数,同样是第m个人,再让它出局,如此反复,直到剩下一个人。

问题求剩下一个人编号是多少。

#include <stdio.h>main(){int n, m, i, s=0;printf ("Enter n: m: ");scanf("%d%d", &n, &m);for (i=2; i<=n; i++) s=(s+m)%i;printf ("The winner is %d\n", s+1); }11、搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬一块砖(小孩不分性别),问有多少男人,多少女人,多少小孩?#include <stdio.h>main( ){ int i,j,k;for(i=1;i<=36/4;i++)for(j=1;j<=36/3;j++)for(k=2;k<=36*2;k+=2)if(36==4*i+3*j+k/2)printf("%2d,%d,%2d ",i,j,k);}12、爱因斯坦的阶梯问题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

请问该阶梯至少有多少阶。

编写一个C程序解决该问题。

#include <stdio.h>main( ){int x;for(x=7; ;x+=14)if(x%3==2&&x%5==4&&x%6==5) break;printf("The number of the ladders is:%d\n",x);}13、递增的牛群:若一头小母牛,从第四年开始每年生一头母牛,按些规律,第n年时有多少头母牛?#include <stdio.h>main(){int i,year,f,f1,f2,f3;printf("Enter year:");scanf("%d",&year);for(i=1;i<=year;i++){if(i<4)f=f1=f2=f3=1;else{f=f1+f3;f3=f2;f2=f1;f1=f;}printf("i=%2d n=%3d\n",i,f);}}14、换零钱:将一元钱换成1分、2分、5分、1角、2角、5角的零钱若干,一共有多少种兑换方法?#include <stdio.h>void main(){int i,j,n,k,m,h,s=0;for(i=0;i<=20;i++)for(j=0;j<=50;j++)for(n=0;n<=100;n++)for(k=0;k<=10;k++)for(m=0;m<=5;m++)for(h=0;h<=2;h++)if( 5*i+2*j+1*n+10*k+20*m+50*h==100){printf("%2d %2d个, %2d %2d个, %2d %2d ,%2d %2d个 ,%2d %2d 个 ,%2d %2d个",5,i,2,j,1,n,10,k,20,m,50,h);printf("\n");s++;}printf("一共有%d种方法",s);}15.海滩上有一堆桃子,五只猴子来分。

第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。

第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?#include<stdio.h>main(){int i,m,j,k,count;for(i=4;i<10000;i+=4){count=0;m=i;for(k=0;k<5;k++){j=i/4*5+1;i=j;if(j%4==0)count++;else break;}i=m;if(count==4) {printf("%d\n",j);break;}}}16.印度国王的奖励:相传古印度宰相达依尔,是国际象棋的发明者。

有一次,国王因为他的贡献要奖励他,问他想要什么。

达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。

”国王一想,这还不容易,让人扛了一袋麦子,但很快用完了,再扛出一袋还是不够,请你为国王算一下总共给达依尔多少小麦?(设1平方米小麦约1.4*108颗)17、水仙花数:水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。

相关文档
最新文档