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);
}

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读