实验二 C语言分支与循环基础应用编程-1

task1.c 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 5
#define N1 397
#define N2 476
#define N3 21

int main(){
int cnt;
int random_major,random_no;
srand(time(NULL));//以当前系统时间作为随机种子
cnt=0;
while(cnt<N){
random_major=rand()%2;//生成一个随机数并且除2取余数,余数可能是0或者1 
if(random_major){//如果余数是1 
random_no=rand()%(N2-N1+1)+N1;//生成一个在 N1 和 N2 之间的随机数
printf("20248329%04d\n",random_no);
}
else{
	random_no=rand()%N3+1;//生成一个在1和 N3 之间的随机数。
	printf("20248395%04d\n",random_no);
}
cnt++;
}
return 0;
	
}

问题1:解释line21代码 random_no = rand() % (N2 - N1 + 1) + N1;的功能  Q:生成一个在 N1 和 N2 之间的随机数

问题2:解释line25代码 random_no = rand() % N3 + 1;的功能 Q:生成一个在1和 N3 之间的随机数

问题3:这个程序的功能是什么? Q:随机生成计算机7到12和奇安信1班学生的学号

task.2

// 一元二次方程求解
#include <stdio.h>
 #include <math.h>
 int main() {
    double a, b, c;
    double delta, p1, p2; // 用于保存中间计算结果
    while(scanf("%lf%lf%lf", &a, &b, &c) != EOF) {
        if(a == 0) {
            printf("a = 0, invalid input\n");
            continue;
        }
        delta = b*b - 4*a*c;
        p1 = -b/2/a;
        p2 = sqrt(fabs(delta))/2/a;
        if(delta == 0)
            printf("x1 = x2 = %.2g\n", p1);
        else if(delta > 0)
            printf("x1 = %.2g, x2 = %.2g\n", p1+p2, p1-p2);
        else {
            printf("x1 = %.2g + %.2gi, ", p1, p2);
            printf("x2 = %.2g - %.2gi\n", p1, p2);
        }
    }
    return 0;
 }

task.3

#include <stdio.h>

int main(){

while(1){

char input;
scanf("%c",&input);
if(input=='r'){
printf("stop!\n");
getchar();    
}
else if(input=='g'){
printf("go go go\n");
getchar();
}
else if(input=='y'){
printf("wait a minute\n");
getchar();
}
else {
printf("something must be wrong...\n");
getchar();
}
    
    
}    
return 0;    
} 

task.4

#include <stdio.h>
int main(){
double x;
double cost;
double max_cost;
double min_cost;
double final_cost;
max_cost=0;
min_cost=20000;
final_cost=0;
cost=0;
printf("输入今日开销,直至-1结束;\n"); 
while (cost!=-1){
scanf("%lf",&cost);    
getchar();
if (cost>max_cost){
    max_cost=cost;
}
if (cost>=0){
if (cost<min_cost){
    min_cost=cost;}
}    
final_cost+=cost;        
}    
printf("今日累计消费总额:%.1f\n",final_cost);
printf("今日最高一笔开销:%.1f\n",max_cost);
printf("今日最低一笔开销:%.1f\n",min_cost);
    
    
return 0;
    

task.5

#include <stdio.h>
int main(){
int a,b,c;
int result;
while(1){

result=scanf("%d%d%d",&a,&b,&c);

    if (result != 3) {
            // 发生错误或者到达文件末尾
            break;
        }
getchar();
if ((a+b<=c)||(a+c<=b)||(b+c<=a)){
printf("不能构成三角形\n");
}
else if((a*a+b*b==c*c)||(b*b+c*c==a*a)||(a*a+c*c==b*b)){
printf("直角三角形\n");
}
else if((a==b)&&(a==c)){
printf("等边三角形\n");
}
else if(((a==b)&&(a!=c))||((a==c)&&(b!=a))||((b==c)&&(b!=a))){
printf("等腰三角形\n");
}
else{
printf("普通三角形\n");
} 
}
    
    
return 0; 
}

task.6

#include <stdio.h>
#include <stdlib.h> 
int main(){
printf("猜猜2024年11月哪一天会是你的lucky day\n");
printf("开始喽,你有三次机会,猜吧(1~30):" );
int n,ans,input;
n=0;
ans=rand()%30+1;
while(n!=3){

scanf("%d",&input);
if (input>ans){
printf("你猜的日期晚了,你的lucky day在前面哦\n");

}
else if(input<ans){
printf("你猜的日期早了,你的lucky day还没到呢\n");

}
else if(input==ans){
printf("哇,猜中了");
break;
}    
n=n+1;
if(n<=2){

printf("再猜(1~30):");}
}
if(n==3){
printf("次数用光啦。偷偷告诉你,11月你的lucky day是%d号",ans);
    
}
}

 

posted @ 2024-10-10 14:54  nightmare777  阅读(18)  评论(0编辑  收藏  举报