浙大版《C语言程序设计实验与习题指导(第4版)》题目集(持续更新)

C语言练习

实验1-1 Hello World!

  • 要求:
    输出一个短句“Hello World!”。

  • 答案:

#include<stdio.h>
int main()
{
   printf("Hello world!\n"); 
   
   return 0; 
} 

实验1-2 简单求阶乘问题

  • 要求:
    在一行中给出一个不超过12的正整数N,在一行中输出阶乘的值。

  • 答案:

#include<stdio.h>

int main()
{
	//输入一个正整数N(不超过12),计算N的阶乘,
  	printf("输入一个正整数N:\n");
	int n = 0;//输入的值 
	int res = 1;//结果 
  	scanf("%d",&n);
  	for(int i = 1;i < n +1; i++)
  	{
  		res *=i;
	}
	
	printf("%d\n",res);
  	
  	return 0;
 } 

实验2-1-1 Welcome to You!

  • 要求:
    输出一个短句“Welcome to You!”。

实验2-1-2 Programming in C is fun!

  • 要求:
    输出一个短句“Programming in C is fun!”。

实验2-1-3 输出三角形

  • 要求:
    按照下列格式输出由“*”组成的三角图案。
****
***
**
*
  • 答案:
#include<stdio.h>
#define N 4

int main()
{
	for(int j = 0;j < N; j++){
		for(int i =0;i < N - j; i++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0; 
} 

实验2-1-4 输出菱形图案

  • 要求:按以下格式输出菱形图案
  A
A   A
  A

实验2-1-5 输出带框文字

  • 要求:按以下格式输出带框文字
************
  Welcome
************

实验2-1-6 打印菜单

  • 要求:
    按照下列格式打印菜单,每行显示一句。注意除了每行的换行不能有任何多余字符。
[1] Select crisps
[2] Select popcorn
[3] Select chocolate
[4] Select cola
[0] Exit

实验2-1-7 输出倒三角图案

  • 要求:
    本题要求编写程序,输出指定的由“*”组成的倒三角图案。
* * * *
 * * *
  * *
   *

实验2-2-1 温度转换

  • 要求:
    本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
  • 输出格式:
fahr = 150, celsius = 计算所得摄氏温度的整数值
  • 答案:
#include<stdio.h> 

int getCelsius(int fahr);

int main()
{
	int fahr = 150;
	printf("fahr = %d, celsous = %d\n",fahr,getCelsius(fahr));
	
	return 0;
}


int getCelsius(int fahr)
{
	int celsius = 0;
	celsius = (fahr - 32) * 5 / 9;
	
	return celsius;
}

实验2-2-2 计算华氏温度

  • 要求:
    本题要求编写程序,计算摄氏温度26°C 对应的华氏温度。计算公式:F=9×C/5+32,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
  • 输出格式:
celsius = 26, fahr = 对应的华氏温度整数值

实验2-2-3 计算物体自由下落的距离

  • 要求
    一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/秒²。
  • 输出格式:
height = 垂直距离值
  • 答案
#include<stdio.h>
int getHeight(int s);

int main()
{
	int t = 3;
	printf("height = %d\n",getHeight(t));
	
	return 0;
}

int getHeight(int t)
{
	int height = 0;
	height =  t * t  * 10 *1/2;//1/2要放在后面,否则0.5会舍去 
	return height; 
}

实验2-2-4 计算平均分

  • 要求
    已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。
  • 输出格式:
math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
  • 答案
#include<stdio.h>
int getAverage(int math,int eng,int comp);

int main()
{
	int math = 87, eng = 72, comp = 93;
	int average = getAverage(87,73,93);
	printf("average = %d\n",average);
	
	return 0;
}

int getAverage(int math,int eng,int comp)
{
	int average = 0;
	average =  (math + eng + comp) / 3;
	
	return average; 
}

实验2-2-5 将x的平方赋值给y

  • 要求
    假设x的值为3,计算x的平方并赋值给y,分别以“y = x ∗ x”和“x ∗ x = y”的形式输出x和y的值。
  • 输出
    按照下列格式输出代入x=3的结果:
y = x * x
x * x = y
  • 答案
#include<stdio.h>

int squa(int x);

int main()
{
	int x = 3;
	int y = 0;
	y = squa(x);
	printf("%d = %d * %d\n",y,x,x);
	printf("%d * %d = %d\n",x,x,y);
 } 
 
 int squa(int x)
 {
 	int y = 0;
 	y = x * x;
 	return y;
 }

实验2-2-6 3人分糖果

  • 要求
    幼儿园里,有3个小朋友编号分别是1、2、3,他们按自己的编号顺序围坐在一张圆桌旁,每个小朋友的面前分别有8、9、10颗糖果。现在做一个分糖果游戏,从1号小朋友开始,将自己的糖果平均分成三份(如果有多余的糖果,则自己立刻吃掉),自己留一份,其余两份分给相邻座位的两个小朋友。接着,2号、3号小朋友也同样这么做。请问一轮后,每个小朋友面前分别有多少糖果?
  • 输出
    在一行内显示以下结果。注意行末除了换行符不能有任何多余字符。
    10 8 5
  • 答案
#include<stdio.h>

int main()
{
int candies[] = {8, 9, 10};

for (int i = 0; i < 3; i++) {
    int self = candies[i] / 3;  
    int remaining = candies[i] % 3;  
    candies[i] = self;  
    candies[(i + 1) % 3] += self;  
    candies[(i + 2) % 3] += self;  
    candies[i] += remaining;  
}


for (int i = 0; i < 3; i++) {
    printf("%d ",candies[i]);
}
	
	return 0;
}

实验2-2-7 整数152的各位数字

  • 要求
    本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。
  • 输出格式
152 = 个位数字 + 十位数字*10 + 百位数字*100

实验2-3-1 计算分段函数[1]

  • 要求
    本题目要求计算下列分段函数f(x)的值:
  • 输入:10
  • 输出:f(10.0) = 0.1

练习3-2

  • 要求
  • 答案
#include<stdio.h>
 
 int sign(int n){
 	if(n < 0){
 		n = -1;
	 }
	 else if(n > 0){
	 	n = 1;
	 }
	 
	 return n;
 } 
 
 int main()
 {
 	int n = 0;
 	scanf("%d",&n);
 	
 	printf("sign(%d) = %d\n",n, sign(n));
 	
 	return 0;
 }

练习3-3

  • 要求

  • 答案

#include<stdio.h>
 
 int main()
 {
 	int i;
 	int n = 0;
 	scanf("%d",&n);
 	int grades[n];
 	
 	for(i = 0;i < n;i++){
 		scanf("%d",&grades[i]);	
	 }
 	
 	
	float average = 0.0;
	int count = 0,sum = 0;
	
	int len = sizeof(grades)/sizeof(grades[0]);
	

	for(i =0; i < len; i++){
		//计算总分 
		sum += grades[i];
		//计算不及格人数 
		if(grades[i] >= 60){
			count++;
		}
	}
	average = (float)sum / n;
 	
 	printf("average = %.1f\n",average);
 	printf("count = %d\n",count);
 	
 	return 0;
 }

练习3-4

  • 要求

  • 答案

#include <stdio.h>

int main() {
   char c; // 临时字符
   int letters = 0; // 字母个数
   int spaces = 0; // 空格个数
   int digits = 0; // 数字字符
   int others = 0; // 其他字符
   int n = 0;	// 记录输入字符的个数 
   printf("请输入一串字符,以回车结束:");
   while ((c = getchar()) != '\n')
   {
   	  if(n == 10) break;
      if ((c >='a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
         letters++;
      } else if (c >= '0' && c <= '9') {
         digits++;
      } else if (c == ' ') {
         spaces++;
      } else {
         others++;
      }
      n++; 
   }
   printf("letter = %d, blank = %d, digit = %d, other = %d\n", letters, spaces, digits, others);
   return 0;
}
posted @ 2023-07-28 22:43  FL不凡  阅读(182)  评论(0编辑  收藏  举报