11.6 C语言学习

逆序输出

#include<stdio.h>
#define maxn 105
int a[maxn];
int main()
{
int x, n = 0;
while(scanf("%d", &x) == 1)//scanf返回的是输入的数据的个数,每次读入一个,读入成功则==1,继续执行while循环内语句,scanf对于数据的输入,例如%d,可自动忽略若干个数据中的空白符 
a[n++] = x; //{a[n]=x,n=n+1(a[0]、a[1]...将x值存入数组}
for(int i = n-1; i >= 1; i--)
printf("%d ", a[i]);
printf("%d\n", a[0]);
return 0;
}

scanf("%d",&x)
其返回值为正确输入的变量个数. 正确执行时会成功给x赋值,即赋值了一个变量. 返回1.
当出错的时候,比如输入了字母,那么就会返回0.
当遇到文件结束标记EOF的时候,会返回-1.
所以,这个代码,不一定要ctrl +z 输入任意非数字字符就可以终止循环了.
ctrl +Z 就是windows上输入EOF标记的方法,会引起scanf返回-1

 

 

开灯问题。有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2
的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯
将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输
入n和k,输出开着的灯的编号。k≤n≤1000。
样例输入:
7 3
样例输出:
1 5 6 7

#include<stdio.h>
#include<string.h>
#define maxn 1010
int a[maxn];
int main()
{
	int n, k, first = 1;
	memset(a, 0, sizeof(a));//清零数组a,需加string 赋初值0或-1 
	scanf("%d%d", &n, &k);
	for(int i = 1; i <= k; i++) //k-人 n-灯    人 
	for(int j = 1; j <= n; j++)// 灯 
	if(j % i == 0) a[j] = !a[j];//非零即真,将为0的数取1,不为1的数赋0 
	for(int i = 1; i <= n; i++)
	if(a[i])              //灯的开关编号 
{ 
	if(first) first = 0;  //第一个变量前 不应有空格 
	else printf(" ");
	printf("%d", i); 
}
	printf("\n");
	return 0;
}

 

strlen(char *)

作用:检测字符串实际长度。

如:char s[]="1234567";

int a=strlen(s);//a=7

实际上strlen(char *)检测的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符数。

又如:

char f[]="123456\01111";

int b=strlen(f);//b=6,因为遇到了'\0'

9

 

\12是转义字符,表示八进制10,就是换行符,换到下一行;

\后面跟八进制数,所以后面的数最大是7;
\x后面跟十六进制数,所以后面跟的字母最大是F或f。

可以这里理解 \ddd 是八进制的字符 为什么128 不能连一起 因为八进制是0-7

#include<stdio.h>
#include<string.h>
int main()
{
    char s[]="a\128b\\\tcd\n";
    printf("%d",strlen(s));
    return 0;
}

 

https://blog.csdn.net/u013812502/article/details/81198452

C语言基础——sizeof的用法总结

#include<stdio.h>
#include<string.h>
int main()
{
	char s[7]="a0\0a0\0";
	int i,j;
	i=sizeof(s);
	j=strlen(s);
	printf("%d %d",i,j);
	return 0;
}

https://blog.csdn.net/nanhuaibeian/article/details/87566715 字符数组补充 

https://blog.csdn.net/jolin678/article/details/49535039

 

 

 

isalpha是一种函数:判断字符ch是否为英文字母,若为英文字母,返回非0(小写字母为2,大写字母为1)。若不是字母,返回0。在标准c中相当于使用“ isupper( ch ) || islower( ch ) ”做测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值