浙江大学-翁凯 C语言进阶,编程题

 

第一周 

题目:

尴尬,第一次,只通过了一个测例

#include<stdio.h>
#include<string.h>
int main(){
	char str1[10000] = {0};
	char str2[10000] = {0};
	char *p,*q;
	int n =0; 
	
	gets(str1);
	gets(str2);

	p = str1;
	q = str1;
	
	while(1)
	{
		q = strstr(p,str2);
        if(q == NULL)
        {
        	if(n == 0)
        		printf("-1");
        	break;		
		}
		n++;
		p = q + strlen(str2);
		printf("%d ",q-str1);
		
	}
	
	return 0;
}

然后找问题,,,发现原来搞错了输入顺序,修改过来之后

 

然后想来一个满分,再想了一个,发现还是有问题、、

#include<stdio.h>
#include<string.h>
int main(){
	char str1[10000] = {0};
	char str2[10000] = {0};
	char *p,*q;
	int n =0; 
	int len,i,flag;
	
	gets(str1);
	gets(str2);

	p = str2;
	q = str1;
	len =strlen(str1);
	flag = 0;

	while(*p != '\0'  )
	{
		while(*q != *p)
		{
			p++;
			if(*p == '\0')
				break;
		}
		for(i = 1;i < len;i++)
		{
			if(p[i] !=q[i])
				break;
		}
		
        if(i == len)
		{
			flag = 1;
        	printf("%d ",p-str2);
		}
		p++;

	}
	if(!flag)
		printf("-1");
	
	return 0;
}
​​

结果

然后又是一顿思考、、、上面两种方法分别都遗漏了一种情况,然后想呀想,发现是有一种第一次忘记了一个情况就是当字符串1为aa然后字符串为aaaa的输出,然后

#include<stdio.h>
#include<string.h>
int main(){
	char str1[10000] = {0};
	char str2[10000] = {0};
	char *p,*q;
	int n =0; 
	
	gets(str1);
	gets(str2);

	p = str2;
	q = str2;
	
	while(1)
	{
		q = strstr(p,str1);
        if(q == NULL)
        {
        	if(n == 0)
        		printf("-1");
        	break;		
		}
		n++;
		p = q + 1;
		printf("%d ",q-str2);
		
	}
	
	return 0;
}

终于是解决了、、、、啊哈哈哈哈

更新第二周

#include<stdio.h>
#include<stdlib.h>
typedef struct Ints{
	int n;
	struct Ints * next;
}Ints; 
//把p节点插入l链表中 
Ints * inser(Ints *l,Ints *p){

	if(!l->next){
		l->next = p;
	}
	else{
		p->next = l->next;
		l->next = p;
		l->n++;
	}
	return l;
} 

int main(){
	Ints *head = (Ints *)malloc(sizeof(Ints));
	head->n = 0;
	head->next = NULL;
	int n;
	Ints *p = head;
	scanf("%d",&n);
	while(n != -1){
		
		p = (Ints *)malloc(sizeof(Ints));
		p->n = n;
		p->next = NULL;
		head = inser(head,p);
		scanf("%d",&n);
	
	}
	p = head->next;

    for(n = 0;n<=head->n;n++){
    	printf("%d ",p->n);
		p = p->next;
	} 

	return 0;
	
}

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MOOC翁凯C语言期末考试是一项对学生在C语言编程方面的掌握程度进行综合评估的考试。在这次考试中,学生将会面对一系列与C语言相关的问题和编程题目。 首先,考试将会涉及C语言的基础知识,包括变量定义、运算符使用、流程控制和函数的使用等。学生需要对这些内容有清晰的理解和掌握,能够正确地应用于实际的编程问题中。 其次,考试还将要求学生能够分析和解决一些较为复杂的编程问题。这些问题可能涉及到数组、指针、结构体等高级数据结构和算法的使用。学生需要能够理解并正确应用这些概念,以解决给定的编程问题。 此外,考试可能会涉及一些C语言程序的输出结果预测和错误调试等内容。学生需要具备对C语言的程序执行过程有清晰的认识,能够正确预测程序输出结果,并有能力发现和纠正程序中的错误。 最后,考试还可能会包括一些编程题目,要求学生能够根据题目要求独立编写C语言程序。在这些题目中,学生需要展示自己的编程能力和解决问题的能力,用C语言实现要求的功能,并保证程序的正确性和健壮性。 综上所述,MOOC翁凯C语言期末考试是一次对学生在C语言编程方面的综合能力进行考察的考试。学生需要掌握C语言的基础知识,具备解决编程问题的能力,并能够独立完成一定的编程任务。该考试将帮助学生提升在C语言编程方面的能力,并为将来在计算机编程领域的学习和工作奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值