程序A输出:PPFPPPThanks ;
程序B输出:Thanks ;
程序A输出“PPFPPPThanks”的原因是,在获取输入的分数后,用除以10的结果来给成绩赋值不同等级字符,然后判断完成后就输出这个等级,for循环结束打印一个“Thanks”;
而程序B输出“Thanks”的原因是,把打印成绩等级放到了switch-case语句中,然后case分支和default分支都有break,所以default后面的打印成绩等级字符这样永远不会执行,所以就只打印了for循环后面的“Thanks”。
测试代码如下:
参考链接:
#include <stdio.h>
int main(void){
int i,score;
char grade;
for(i=1;i<7;i++){
scanf("%d",&score); // 获取一个分数
score=score/10; // 分数除以10
// https://www.runoob.com/cprogramming/c-switch.html
switch(score){ // 分数除以10等于 10,90,80,70,60 则grade赋值为'P' ,这里的分数即在60到109 之间
case 10: case 9: case 8: case 7: case 6:
grade='P';break;
default : // 其他情况 ,grade赋值为'F'
grade = 'F';break;
}
putchar(grade); // 每次在switch-case语句计算完输入分数计算完等级后 ,则输出这个等级
}
printf("Thanks");
printf("\n");
for(i=1;i<7;i++){
scanf("%d",&score);
score=score/10;
switch(score){
case 10: case 9: case 8: case 7: case 6: // 同上,分数除以10等于 10,90,80,70,60 则grade赋值为'P' ,这里的分数即在60到109 之间
grade='P';break;
default : // 其他情况 ,grade赋值为'F'
grade = 'F';break;
putchar(grade); //不同在这里, 打印等级放到了swith-case语句里面, 而这行代码因为前面case和default都有break,所这行永远不会执行
}
}
printf("Thanks");
return 0;
}
大于59即除以10的结果大于5输出P否则输出F
这里将分数整除10,如果是10 9 8 7 6 就输出P,否则输出F
说白了就是60-100是P,60以下是F
这里的switch case语句控制的呀,满足什么条件就输出什么字符,如果score/10 为10,9,8,7,6.输出P其他输出F
供参考:https://www.cnblogs.com/goolu/p/8989832.html
Switch里的break是结束switch循环,所以putchar(grade);未执行,所以没有输出结果
一般用带有头结点来建立链表,这样更简便一些
#include<cstdlib>
#include<cstdio>
#include<string.h>
typedef struct student//建立结构体
{
int n;
char name[100];//这里没有选择用string
//原因是scanf里的%s对string不兼容,好像是这样的......
int s;
struct student *next;
} stu;
using namespace std;
int main()
{
int x,y;
char a[100];
scanf("%d",&x);
stu* head = NULL;//定义头结点
head = new stu();
head->next =NULL;
stu *p =head;
while(x!=0)
{
scanf(" %s %d",a,&y);//没有用cin,而是选择scanf,对于整型和字符串的输入需要注意
stu *q = NULL;
q = new stu();
p->next = q;
q->n = x;
strcpy(q->name,a);//关于字符串函数的使用
q->s = y;
p = q;
scanf("%d",&x);
}
//以前因为判断是不是输入错误所以debug: printf("\nbull shit\n");
int line;
scanf("%d",&line);
p = head->next;
while(p!=NULL)
{
if(p->s>=line)
{
printf("%d %s %d\n",p->n,p->name,p->s);
p = p->next;
}
else
p = p->next;
}
p = head;
while(p!=NULL)//删除链表,防止超时
{
stu *q =p;
p = q->next;
free(q);
}
return 0;
}