浙大版《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;
}