for (i = 0, j = strlen(a) - 1; i < j; i++, j--)
注:前后的相互比较可以同时进行
题目内容:
从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。
#include
main()
{
int i=0;
char a[6];
printf("Input your password:\n");
while(i< 6)
{
scanf("%c",&a[i]);
getchar();
if(a[i]>='0'&&a[i]<='9')
{
printf("%c, you have enter %d-bits number\n",a[i],i+1);
i++;
}
else printf("error\n");
}
}
注1:当不是所有情况都要i++时,用while和do-while更适合,选择格式正确的情况进行i++,同时注意i++的位置:若在a[i]前则此时a[i]没有输入。
注2:每个数输入后还有一个回车符,要在缓冲区清理掉该回车符。可以直接用getchar()。
题目内容:
写一个程序读入你的姓名,然后每个字母间加一个空格后输出。例如,姓名John显示为J o h n。
**输入格式要求:"%s" 提示信息:“请输入你的姓名:”
#include
main()
{
char name[20];
printf("请输入你的姓名:");
scanf("%s",name);
int i=0;
for(;i<strlen(name);i++)
{
printf("%c ",name[i]);
}
}
注:字符数组可以单独以c的形式输出,也可以整体以s形式输出。
负数:以二进制补码形式
整型数:以二进制形式
实型数:以浮点形式
字符:以其对应的ASCⅡ码的二进制形式
字符串:其中的每个字符都是以其对应的ASCⅡ码的二进制形式
for (i = len; i>=0; i--)
{
if (s[i] == c)
{
for (j = i; j < len; j++)
{
s[j] = s[j + 1];
}
}
}
注:从后往前运算,遇到符合条件的字符就用循环将其后的字符前移
字符串中常见的有
char a[N];
法一:用两个函数参数来实现
#include
#include
void Inverse(char str[], char ptr[])
{
int i,j;
for(i=0,j=strlen(str)-1;i<strlen(str),j>=0;i++,j--)
{
ptr[i]=str[j];
}
}
main()
{
char str[30],ptr[30]={0};
printf("Input a string:");
gets(str);
Inverse(str,ptr);
printf("Inversed results:%s\n",ptr);
}
法二:用一个函数参数利用数的交换实现
#include
#include
#define N 80
void Inverse(char str[]);
main()
{
char str[N];
printf("Input a string:\n");
gets(str);
Inverse(str);
printf("Inversed results:\n");
printf("%s\n",str);
}
void Inverse(char str[])
{
int a = strlen(str), i;
char temp;
for(i = 0;i < a/2; i++)
{
temp = str[i];
str[i] = str[a - 1 - i];
str[a - 1 - i] = temp;
}
}