二级C语言部分验证性代码

二级C语言部分验证性代码

一个工程包含多个源文件,最多只能有一个main()函数,其他的文件中如果存在main()函数需要注释掉。同时同一个项目的不同文件中,不可包含同名函数。

1 检测字符串celebration meeting中ti的个数

  • 代码:
#include<stdio.h>
#include<string.h>
int fun(char *s,char *t)
{
	int c=0;
	char *p,*q;
	while(*s)
	{
		p=s; q=t;
		while(*p && *q && *p++ == *q++);
		if(!*q) c++;
		s++;
	}
	return c;
}
void main()
{
	char *str1 = "celebration meeting", *str0 ="ti";
	printf("%d\n",fun(str1,str0));
}
  • 结果
    在这里插入图片描述

2 验证

1)fgets(str,n,fp)一次只能获取n-1个字符,最后自动加零;\\在该函数中表示两个字符,而非转义字符
2)feof(fp)在文件结尾是为非零值;
3)rewind(fp)文件位置回到开头;

  • 代码
#include<stdio.h>
#include<stdlib.h>  //文件读写需要

void main()
{
	FILE *fp;
	char ch,str[9];
	if((fp=fopen("file.txt","wb+"))==NULL)
	{printf("error!\n"); exit(0);}
	ch=getchar();
	while(ch!='!')
	{
		fputc(ch,fp);
		ch = getchar();
	}
	rewind(fp);
	do{
		fgets(str,4,fp);  // "\\"算两个字符长度
		puts(str);	
	}while(!feof(fp));
	rewind(fp);
	fgets(str,9,fp);
	puts(str);
	fclose(fp);
}
  • 结果
    在这里插入图片描述

4)所有不同类型的指针变量大小为4字节,无论是char、int类型,无论指向字符串还是数组
5)转义字符长度为1;int长度为1;char长度为1;数组长度看[]中的值;
6)strlen()测试的长度不包含最终的‘\0’,而sizeof()包含;
在这里插入图片描述

  • 代码
#include<stdio.h>
#include<string.h>  //strlen()
void p()
{
    char *s="c:\\test!";
	int a ,d[10],*s2=d;
	char b,c[6],*s1=c;
	printf("%d,%d,%d\n",sizeof(a),sizeof(b),sizeof(c));
	printf("%d, %d, %d, %s\n",strlen(s),sizeof(s),sizeof(s2), s); // "\\"算一个字符长度       指针变量所占内存空间都为4字节
	puts(s);

}
void main()
{
	p();
}
  • 结果
    在这里插入图片描述

3 迭代

1)每一次迭代都会保留相应级别的值;
2)在逗号表达式中,逗号左边的表达式执行完之后才会执行逗号右边的表达式;

  • 代码
#include <stdio.h>
void fun(int n)
{
	if(n/2) fun(n/2);
	printf("%d\n",n);
	printf("%d\n",n%2);
}


void main()
{
	int x=2;
	printf("%d\n",(x++,2*x));//6
	//printf("%d\n",(++x,2*x));//8,与上一行效果一样
	fun(10); printf("\n\n\n");
}

/*
ps:每一级迭代保留相应级别的值
1
1
2
0
5
1
10
0
*/
  • 结果
    在这里插入图片描述

4 switch()括号里的一定要整型表达式

  • 代码
#include<stdio.h>
int p_1()
{
	int a=1, b=2, c=3;
	if(a<b) c=a, a=b, b=c;
	printf("%d %d %d\n",a,b,c);
	return 0;
}
int p_2()
{
	int a=0,b=3; 
	switch(a)
	{
	//case 0: a++;
	case 1: a=b; break;
	case 0: a++;
	}
	printf("%d %d\n",a,b);
    return 0;

}

int main()
{
    int a=0, b=0, c=0, d=0;
	if(a=1) { b=1;c=2;}
	else d=3;
	printf("%d %d %d %d\n",a,b,c,d); //1 1 2 0
	p_1();
	p_2();
	return 0;

}
  • 结果
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值