C语言 经典例题(结构化程序设计,选择控制结构,函数调用,循环,字符串,指针)

C语言经典例题 小测五道题

小编想说:我是我们学校软件设计和程序协会研发部的一员,我们研发部每星期都会在我们的公众号上分享一些小题目。最近都是出C语言类的,这星期是我选题目。以下就是我这一初学者的拙作,有些题目我稍微改了一点点;提示,解析都是我自己写的,知识科普也是我自己归纳的。如果有哪里写得不好的,敢请大神们指教,谢谢。

  1. 【结构化程序设计】热热身,编写出九九乘法表,要求成三角形分布,并且结果要右对齐。

小编提示:先定义整数i与j,并能使i与j分别可以从1依次加一加到9,使i与j依次相乘。利用循环语句使i能从1依次加一到9,并在i的循环语句下再次利用循环语句使得j能够从1依次加一到i,输出i*j,并使输出结果后空一格,当i结束一次循环时换行。

#include <stdio.h>
int main(void)
{
	for(int i=1;i<=9;i++)//先定义i,一共九行。
	{
		for(int j=1;j<=i;j++) //每行从1开始逐个乘,最后该乘以的数不得超过此行数。
		printf("%d*%d=%2d ",i,j,i*j);//(%2d:按宽度为2输出,右对齐方式输出。)
		printf("\n");//每一行输出完换行。
	}
	return 0;
}

知识普及:
scanf和printf都会有%3.2d之类的数字
scanf和printf的输入输出
scanf的输入可以限制域宽
就是输入字符的宽度,但是不能限制后面的小数位数, 否则程序可能会出错。
然而printf相反,他能限制输出的后面的小数,却不能限制输出的域宽,最多在空的地方加个空格而已
如果是scanf,因为c语言中禁止限制输入的时候的答小数的位数,所以只能限制输入的字符的宽度
scanf(“%3f”,a);
printf(“%2.2f”,a);
For example:如果输入的数是12345
那么,scanf取到的数据是123,后面的位数不起作用的,所以45没了
取到了123之后
再用printf输出的数应该是三位,但是限制的域宽是2位
这样的话,会损坏数据,所以限制不起作用,输出的是123.00

2.【选择控制结构】请设计一个猜数游戏。
(1)每次系统在1-100之间随机产生一个不同的数,等待用户输入猜测的结果。
(2)运用循环,用户每输入一个数,若还没猜对,需要告诉用户系统猜测结果比系统随机数大了还是小了;
(3)最后需要一个变量记录告诉用户已经猜了多少次;
(4)当用户猜中时,游戏结束,退出.
小编提示:先定义用户猜测结果,系统随机数,用户猜测的次数;再想想如何让系统产生随机数?然后运用循环,引导用户的猜测结果离系统随机数越来越近;猜对后输出猜测次数。打完代码后再次检查头部文件是否齐全(一共要用到三个头部文件)。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
	int i,j,k=0;
	srand(time(NULL));//使用当前时间进行随机数发生器的初始化。
	i=rand()%100+1;//产生一个随机的数(1~100间)
	do
	{
		printf("请输入你要猜的数(1-100):");
		scanf("%d",&j);
		if(i>j)
		printf("你猜错了!猜小了!\n");
		if(i<j)
		printf("你猜错了!猜大了!\n");
		k++;
	}while(i!=j);
	printf("恭喜你!猜对了!一共猜了%d次\n",k);
} 

知识普及:
stdio.h是standard input&output标准输入输出头文件
定位在标准的输入输出工具函数。
主要封装了getchar()、putchar()、scanf()、printf()、gets()、puts()、sprintf()等函数。
stdlib.h是standard library标准库头文件,定位在通用工具函数。
主要封装了malloc()、calloc()、realloc()、free()、system()、atoi()、
atol()、rand()、srand()、exit()等函数。
头文件<time.h>中说明了一些用于处理日期和时间的类型和函数。

srand函数是随机数发生器的初始化函数。
srand和rand()配合使用产生伪随机数序列。

3.【函数调用,循环】从键盘输入一组数据,运用递归得方法求平均数并输出。

小编提示:
(1) 可以先定义平均函数avg(int n)接受传递的值;
(2) 打主函数的代码:定义n,请用户输入将要输入的数据的个数;定义用于计算表达式的结果a,传递,输出结果;
(3) 再回头打平均函数avg(int n)的代码:定义sum,运用循环,请用户逐个输入待测数据;定义avg=?最后返回avg。

#include<stdio.h>
int avg(int n)
{
	int sum=0;//定义这组数的总和。
	int i=n;//用i进行循环。
	int data;//定义输入的数据
	while(i>0)
	{
		scanf("%d",&data);
		sum+=data;//将输入的数据逐个相加。
		i--;//输入个数不断减少。
	}
	int avg=sum/n;
	return avg;//返回平均数。
} 
int main(void)
{
	int n;
	printf("要输入的个数:\n");
	scanf("%d",&n);
	int a=0;//a用于计算表达式结果
	a=avg(n);//传递n。
	printf("%d个数得平均值是:%d\n",n,a);
	return 0;
}

4.【字符串】要求编程求出一句话中到底有多少单词。首先在屏幕上输入一句话,每个单词之间用一个空格隔开,要求第一个字符和最后一个字符都不能为空格;然后运用for循环统计出这句话的单词数量,并把结果输出到屏幕上。

小编提示:
(1)首先使用gets()函数将输入的字符串保存在str字符数组中;
(2)然后使用if语句判断用户输入的第一个字符串是否为结束符,做相应处理;
(3)采用for循环遍历字符串=数组中的每个字符;
(4)最后把总单词数输出到屏幕上。

#include <stdio.h>
int main(void)
{
	printf("请输入一段文字(不超过50个):\n");
	char str[50];
	int i,count=1;
	char blank;//定义空格 
	gets(str);
	if(str[0]=='\0')//判断第一个字符是否是空格 
	printf("没有输入文字\n");
	else
	{
		for(i=0;str[i]!='\0';i++)
		{
			if(str[i]==' ')//判断是否有空格 
			{
				count++;//有空格说明又多了一个单词 
			}
		}
		printf("本段文字有%d个单词\n",count);// 
	}
	return 0;
}


5.【字符串,指针】编写一函数,求一个字符串的长度,要求用字符串指针实现。在主函数中输入字符串,调用该函数输出其长度。

小编提示:
(1) 先定义统计字符串的函数
(2) 主函数:定义字符串数组,用户输入,传递;
(3) 编写统计符串的函数(运用循环统计)。

#include <stdio.h>
void Mystrlen(char *pa);
int main ()
{
	char str[50];//定义字符串数组 
	printf("请输入一段文字:(包括空格不超过五十个)\n");
	gets(str);
	Mystrlen(str);
	return 0;
}
void Mystrlen(char *pa)//传递 字符串指针 
{
	int count=0;
	while(*pa!='\0')
	{
		pa++;
		count++;
	}
	printf("实际字符个数为:%d\n",count);
}

相关推荐
谭浩强主编,清华大学出版社,国内学习C语言的一本经典教材,跟大家分享 内容简介:   谭浩强c语言程序设计(第3版)电子书    1 C语言概述    1.1 C语言的发展过程    1.2 当代最优秀的程序设计语言    1.3 C语言版本    1.4 C语言的特点    1.5 面向对象的程序设计语言    1.6 C和C++    1.7 简单的C程序介绍    1.8 输入和输出函数    1.9 C源程序的结构特点    1.10 书写程序时应遵循的规则    1.11 C语言的字符集    1.12 C语言词汇    1.13 Turbo C 2.0集成开发环境的使用    1.13.1 Turbo C 2.0简介和启动    1.13.2 Turbo C 2.0集成开发环境    1.13.3 File菜单    1.13.4 Edit菜单    1.13.5 Run菜单    1.13.6 Compile菜单    1    1.13.7 Project菜单    1.13.8 Options菜单    1.13.9 Debug菜单    1.13.10 Break/watch菜单    1.13.11 Turbo C 2.0的配置文件    2 程序的灵魂—算法    2.1 算法的概念 21    2.2 简单算法举例 21    2.3 算法的特性 24    2.4 怎样表示一个算法 24    2.4.1 用自然语言表示算法 24    2.4.2 用流程图表示算法 24    2.4.3 三种基本结构和改进的流程图 28    2.4.4 用N-S流程图表示算法 29    2.4.5 用伪代码表示算法 30    2.4.6 用计算机语言表示算法 31    2.5 结构化程序设计方法 31    3 数据类型、运算符与表达式    3.1 C语言的数据类型 32    3.2 常量与变量 33    2    3.2.1 常量和符号常量 33    3.2.2 变量 33    3.3 整型数据 34    3.3.1 整型常量的表示方法 34    3.3.2 整型变量 35    3.4 实型数据 37    3.4.1 实型常量的表示方法 37    3.4.2 实型变量 38    3.4.3 实型常数的类型 39    3.5 字符型数据 39    3.5.1 字符常量 39    3.5.2 转义字符 39    3.5.3 字符变量 40    3.5.4 字符数据在内存中的存储形式及使用方法 41    3.5.5 字符串常量 41    3.5.6 符号常量 42    3.6 变量赋初值 42    3.7 各类数值型数据之间的混合运算 43    3.8 算术运算符和算术表达式 44    3.8.1 C运算符简介 44    3.8.2 算术运算符和算术表达式 45    3.9 赋值运算符和赋值表达式 47    3    3.10 逗号运算符和逗号表达式 48    3.11 小结 49    3.11.1 C的数据类型 49    3.11.2 基本类型的分类及特点 49    3.11.3 常量后缀 49    3.11.4 常量类型 49    3.11.5 数据类型转换 49    3.11.6 运算符优先级和结合性 50   表达式 50    4 最简单的C程序设计—顺序程序设计    4.1 C语句概述 51    4.2 赋值语句 53    4.3 数据输入输出的概念及在C语言中的实现 54    4.4 字符数据的输入输出 54    4.4.1 putchar 函数(字符输出函数) 54    4.4.2 getchar函数(键盘输入函数) 55    4.5 格式输入与输出 55    4.5.1 printf函数(格式输出函数) 56    4.5.2 scanf函数(格式输入函数) 58   顺序结构程序设计举例 60    4    5 分支结构程序    5.1 关系运算符和表达式 61    5.1.1 关系运算符及其优先次序 61    5.1.2 关系表达式 61    5.2 逻辑运算符和表达式 62    5.2.1 逻辑运算符极其优先次序 62    5.2.2 逻辑运算的值 63    5.2.3 逻辑表达式 63    5.3 if语句 64    5.3.1 if语句的三种形式 64    5.3.2 if语句的嵌套 67    5.3.3 条件运算符和条件表达式 69    5.4 switch语句 70    5.5 程序举例 71    6 循环控制    6.1 概述 71    6.2 goto语句以及用goto语句构成循环 71    6.3 while语句 72    6.4 do-while语句 74    6.5 for语句 76    6.6 循环的嵌套 79    5    6.7 几种循环的比较 79    6.8 break和continue语句 79    6.8.1 break语句 79    6.8.2 continue 语句 80    6.9 程序举例 81    7 数组    7.1 一维数组的定义和引用 82    7.1.1 一维数组的定义方式 82    7.1.2 一维数组元素的引用 83    7.1.3 一维数组的初始化 84    7.1.4 一维数组程序举例 84    7.2 二维数组的定义和引用 86    7.2.1 二维数组的定义 86    7.2.2 二维数组元素的引用 86    7.2.3 二维数组的初始化 87    7.2.4 二维数组程序举例 89    7.3 字符数组 89    7.3.1 字符数组的定义 89    7.3.2 字符数组的初始化 89    7.3.3 字符数组的引用 90    7.3.4 字符串字符串结束标志 91    6    7.3.5 字符数组的输入输出 91    7.3.6 字符串处理函数 92    7.4 程序举例 94   本章小结 97    8 函数    8.1 概述 98    8.2 函数定义的一般形式 99    8.3 函数的参数和函数的值 100    8.3.1 形式参数和实际参数 101    8.3.2 函数的返回值 102    8.4 函数的调用 106    8.4.1 函数调用的一般形式 106    8.4.2 函数调用的方式 106    8.4.3 被调用函数的声明和函数原型 107    8.5 函数的嵌套调用 108    8.6 函数的递归调用 109    8.7 数组作为函数参数 110    8.8 局部变量和全局变量 112    8.8.1 局部变量 113    8.8.2 全局变量 119    8.9 变量的存储类别 120    7    8.9.1 动态存储方式与静态动态存储方式 120    8.9.2 auto变量 120    8.9.3 用static声明局部变量 121    8.9.4 register变量 122   用extern声明外部变量 123    9 预处理命令    9.1 概述 124    9.2 宏定义 125    9.2.1 无参宏定义 126    9.2.2 带参宏定义 127    9.3 文件包含 128    9.4 条件编译 130    9.5 本章小结    10 指针    10.1 地址指针的基本概念 131    10.2 变量的指针和指向变量的指针变量 132    10.2.1 定义一个指针变量 133    10.2.2 指针变量的引用 133    10.2.3 指针变量作为函数参数 137    10.2.4 指针变量几个问题的进一步说明 140    8    10.3 数组指针和指向数组的指针变量 141    10.3.1 指向数组元素的指针 142    10.3.2 通过指针引用数组元素 143    10.3.3 数组名作函数参数 146    10.3.4 指向多维数组的指针指针变量 148    10.4 字符串指针指向字符串的针指变量 150    10.4.1 字符串的表示形式 152    10.4.2 使用字符串指针变量与字符数组的区别 158    10.5 函数指针变量 159    10.6 指针型函数 160    10.7 指针数组和指向指针指针 161    10.7.1 指针数组的概念 161    10.7.2 指向指针指针 164    10.7.3 main函数的参数 166    10.8 有关指针的数据类型和指针运算的小结 167    10.8.1 有关指针的数据类型的小结 167    10.8.2 指针运算的小结 167    10.8.3 void指针类型 168    11 结构体与共用体    11.1 定义一个结构的一般形式 170    11.2 结构类型变量的说明 172    9    11.3 结构变量成员的表示方法 174    11.4 结构变量的赋值 174    11.5 结构变量的初始化 175    11.6 结构数组的定义 175    11.7 结构指针变量的说明和使用 177    11.7.1 指向结构变量的指针 177    11.7.2 指向结构数组的指针 179    11.7.3 结构指针变量作函数参数 180    11.8 动态存储分配 181    11.9 链表的概念 182    11.10 枚举类型 184    11.10.1 枚举类型的定义和枚举变量的说明 184    11.10.2 枚举类型变量的赋值和使用 185    11.11 类型定义符typedef    12 位运算    12.1 位运算符C语言提供了六种位运算符: 189    12.1.1 按位与运算 191    12.1.2 按位或运算 192    12.1.3 按位异或运算 192    12.1.4 求反运算 193    12.1.5 左移运算 193    10    12.1.6 右移运算 193    12.2 位域(位段) 194    12.3 本章小结    13 文件    13.1 C文件概述 197    13.2 文件指针 198    13.3 文件的打开与关闭 199    13.3.1 文件的打开(fopen函数) 200    13.3.2 文件关闭函数(fclose函数) 202    13.4 文件的读写 204    13.4.1 字符读写函数fgetc和fputc 204    13.4.2 字符串读写函数fgets和fputs 208    13.4.3 数据块读写函数fread和fwtrite 209    13.4.4 格式化读写函数fscanf和fprintf 201    13.5 文件的随机读写 202    13.5.1 文件定位 202    13.5.2 文件的随机读写 203    13.6 文件检测函数 204    13.6.1 文件结束检测函数feof函数 204    13.6.2 读写文件出错检测函数 205    11    13.6.3 文件出错标志和文件结束标志置0函数 206    13.7 C库文件 208    13.8 本章小结
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页