碎片二balabala

图灵机的停机问题

链接: link

在这里插入图片描述假设这个程序存在,是一个黑盒子,对他输入程序和数据,若程序能终止,则输出yes,若停机(无法终止),则输出no。我们把这个程序叫做H(halting)。

在这里插入图片描述现在我们在此基础上再定义一个程序H+,若H输出yes,则它进入死循环,若H输出no,则程序终止。

接下来我们把H+作为要判断的程序输入H中,假设H+可以终止,那么H将输出yes,这时候H+又会陷入死循环,那么H+就变成不可终止的了,出现矛盾。

写一个结构体相关函数

例题一:按等级统计学生成绩

在这里插入图片描述
注意:传进来的是一个指针,相当于一个结构体数组,指向下一个结构体时,要p++,应用结构体中的成员时,格式如下(*p).grade=‘A’;

#include <stdio.h>
#define MAXN 10

struct student{
    int num;
    char name[20];
    int score;
    char grade;
};

int set_grade( struct student *p, int n );

int main()
{   struct student stu[MAXN], *ptr;//*****
    int n, i, count;
    
    ptr = stu;
    scanf("%d\n", &n);
    for(i = 0; i < n; i++){
       scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
    } 
   count = set_grade(ptr, n);
   printf("The count for failed (<60): %d\n", count);
   printf("The grades:\n"); 
   for(i = 0; i < n; i++)
       printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
    return 0;
}

/* 你的代码将被嵌在这里 */
int set_grade( struct student *p, int n ){
	int i,count=0;
	for(i=0;i<n;i++){
		if((*p).score<60){
			(*p).grade='D';
			count++;
		}else if((*p).score<70){
			(*p).grade='C';
		}else if((*p).score<85){
			(*p).grade='B';
		}else if((*p).score<=100){
			(*p).grade='A';
		}
		p++;
	}
	return count;
}

例题二:计算两个复数的乘积

struct complex multiply(struct complex x, struct complex y)
{
    struct complex result;
    result.real=x.real*y.real-x.imag*y.imag;
    result.imag=x.real*y.imag+x.imag*y.real;
    return result;
}

注意:在最后返回时直接返回结构体名字即可

输入的数据分行

可以使用getchar();或gets(a);

int&char的相互转化

int a=‘F’;
可以这样写,但是这样做的本质是把F的ASCII码赋给了a,可以通过%d %c控制输出。
char ch=‘9’;
int b=ch-‘0’;//则b=9
int a=9;
char b=a+‘0’;
printf(“%c”,b);//输出为9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值