C语言经典编程题(推荐)_c语言经典编程题

2020-02-28 其他范文 下载本文

C语言经典编程题(推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言经典编程题”。

C语言经典编程题

题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。

[cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

// 用数组定义一个字符串

char array[50] = “zha junju zhamengjun z mengjun”;

char *str = array;// 定义指针变量str,指向数组array

int len = 0;// 定义变量len,用于计数

int max = 0;// 定义变量max,存放最长单词的长度

char *p = 0;// 定义指针变量p,指向最长单词的首字符

10.11.// 判断指针当前指向的字符是不是''

12.while(*str!= '')13.{

14.if(*str!= ' ')// 判断字符是不是空格 15.{

16.len++;// 计数加1 17.18.// 判断最大长度跟len长度的大小

19.if(max

20.max = len;// 如果max小于len,将len赋值给max

21.p = str1];

46.} 47.else

48.{

49.sumDaysOfMonth += pingYear[monthDay;// 定义整型变量days,存储一个月内相隔的天数

54.int sumDays = 0;// 定义整型变量sumDays,存储两个时间点相隔的总天数

55.56.// 得到两个时间点相隔的总天数

57.sumDays = sumDaysOfYear + sumDaysOfMonth + days;58.59.printf(“两个时间点相隔%d天n”, sumDays);60.61.// 根据相隔的天数,判断小明遇到的人

62.if((sumDays % 2 == 0)&&(sumDays % 3 == 0))63.{

64.printf(“小明既结识了帅哥又结识了美女!n”);65.}

66.else if(sumDays % 2 == 0)67.{

68.printf(“小明结识了帅哥!n”);69.}

70.else if(sumDays % 3 == 0)71.{

72.printf(“小明结识了美女!n”);73.} 74.else

75.{

76.printf(“小明没有结识帅哥和美女n”);77.} 78.}

心得体会:(1)利用for循环遍历,if条件来判断是平年还是闰年,求出相隔年数的累加的天数(2)同理,利用第一步的方法,求出相隔月数的累加的天数,只是要注意每月的天数,根据平年和闰年的不同分别保存在两个不同的数组中,以便利于累加

(3)将输入的日减1,计算出当月相隔的天数,最后求出两个日期相隔的总天数。(4)根据总天数取余2和3,判断出小明当天结识的是美女还是帅哥。

题目05:提示用户输入一个正整数n,利用while循环计算并输出:1-2+3-4+5-6+7…+n的和。

[cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

// 1.定义变量存储用户输入的整数

int n = 0;

// 2.判断n是否为正整数

while(n

// 2.1 提示输入

printf(“输入一个正整数:n”);

10.11.// 2.2 让用户输入

12.scanf(“%d”, &n);13.} 14.15.// 3.计算阶乘

16.int sum = 0;// 存储计算结果

17.int current = 0;// 当前要累加的数值

18.while(current

21.// 如果是偶数,就减

22.if(current % 2 == 0){ 23.sum-= current;24.} else { // 如果是奇数,就加

25.sum += current;26.} 27.} 28.29.// 4.输出结果 30.printf(“%dn”, sum);31.32.return 0;33.}

心得体会:

(1)确保从键盘上输入的是一个整数(用while来判断);(2)用while循环来遍历从1到n的值;

(3)通过奇偶性判断所要累加数值的正负性,奇数就累加,偶数就累减。

题目06:提示用户输入一个正整数n,计算并输出n的阶乘结果:1*2*3*…*n。

[cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

// 1.定义变量存储用户输入的整数

int n = 0;

// 2.判断n是否为正整数

while(n

// 2.1 提示输入

printf(“输入一个正整数:n”);

10.11.// 2.2 让用户输入

12.scanf(“%d”, &n);13.} 14.15.// 3.计算阶乘

16.int result = 1;// 存储计算结果

17.int current = 1;// 当前的乘数

18.while(current

19.result *= current;// 累乘每次的乘数

20.current++;// 乘完一次就++

21.} 22.23.// 4.输出阶乘结果

24.printf(“%d!= %dn”, n, result);25.26.return 0;27.}

心得体会:

(1)可以利用for循环或者while循环进行遍历,利用累乘即可求出值。(2)还可以利用递归来做,更简单。

题目07:编写一个函数,判断某个字符串是否为回文。回文就是从左边开始读 和 从右边开始读 都是一样的,比如“abcba” [cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

printf(“%dn”, isHuiwen(“a”));

return 0;}

/*

返回1代表是回文

返回0代表不是回文

10.*/ 11.int isHuiwen(char *str)

12.{

13.// 1.定义一个指向变量left指向字符串的首字符

14.char *left = str;

15.// 2.定义一个指向变量right指向字符串的末字符

16.char *right = str + strlen(str)1)+ count(n);// 求出每一个阶乘的累加和

58.} 59.60.// 定义和求出一个累加和

61.int count(int n)

62.{

63.if(n == 1)64.return 1;

65.return count(n1;22.23.// 如果左边元素的下标

24.while(left

26.// 利用中间变量交换两个元素的值

27.int temp = array[left];28.array[left] = array[right];29.array[right] = temp;30.31.// 交换一次后,左边元素下标增加,右边元素下标减小

32.33.left++;34.right--;35.} 36.}

心得体会:

(1)首先要明白一点,为什么不能通过sizeof(array)/ sizeof(int)来求出数组元素的个数?因为当数组作为参数传递的时候,函数的参数array实际上当做变量来存储传来的数组首元素的地址。而每一个指针变量占用8个字节。

(2)分别拿出数组首元素和数组尾元素,然后利用中间变量交换两个元素的值。(3)利用while循环,遍历数组元素,并使left

(4)函数reverse不需要返回值,因为改变了形参数组也就改变了外面的实参数组,因为数组是按址传递的。

《C语言经典编程题(推荐).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言经典编程题(推荐)
点击下载文档
相关专题 c语言经典编程题 语言 经典 c语言经典编程题 语言 经典
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文