#include
#include
#define N 100
#define _CRT_SECURE_NO_DEPRECATE;
int main ()
{
int t = 0;
int i;
char a[13];
char b[13];
char c[13];
char d[13];
char e[13];
char m[]="一";
scanf("%s",&a);
scanf("%s",&b);
scanf("%s",&c);
scanf("%s",&d);
scanf("%s",&e);
if (strcmp(a, m) == 0)
t++;
if (strcmp(b, m) == 0)
t++;
if (strcmp(c, m) == 0)
t++;
if (strcmp(d, m) == 0)
t++;
if (strcmp(e, m) == 0)
t++;
printf ("汉字中一有%d个",t);
return 0;
}
输入5个字符,并统计其中的一出现多少次,存在逻辑错误,等待修改
数组的大小最少为三位,因为一个汉字占两个字符,就占据了数组的0和1,然后还要有一位存储/0,一共是三位
在scanf的输入里,数组的输入中&后不可跟[]例如a[],直接跟数组a即可
在数组中第0位未必要全部存数
元素交换
temp=a[index];
a[index]=a[i];
a[i]=temp;
统计字符串中空格字符的个数
while((str[i]=getchar())!='\n\')
i++;
count = 0;
for(i=0;str[i]!='\0';i++)
if(str[i]==' ' )
count++;
统计字符串中空格字符的个数
如果将小写字母改成对应的大写祖母
for(i=0;tt[i];i++)
if(('a'<=tt[i])||(tt[i]<='z'))
tt[i]+=32;
重点是+32就是把小写字母变成大写字母
%c是字符,%s是字符串所对应的
二维数组明天处理重点内容
函数
输入正整数并计算i!
#include
int main ()
{
int i,n;
double sum=0;
printf ("Input n;"0;
scanf("%d",&n);
for (i=1;i<=n;i++)
sum=sum+fact(i);
printf("1!+2!.......
return 0;
}
double fact(int n);
{
int i;
double result;
result =1;
for(i=1;i<=n;i++)
result=result*i;
return result;
7-31 字符串循环左移 (20 分)
#include
#include
void gets(char* s) {
for (char in; in = getchar(), in != '\n';)
*s++ = in;
*s = 0;
}
int main()
{
int n, l, i, m, c;
char s[101];
gets(s);
m= strlen(s);
scanf("%d", &n);
n = n % m;
for (i = n; i < m; i++)
{
printf("%c", s[i]);
}
for (i = 0; i < n; i++)
{
printf("%c", s[i]);
}
return 0;
}
在c++中并没有gets()所以要实现这个功能代码如下
void gets(char* s) {
for (char in; in = getchar(), in != '\n';)
*s++ = in;
*s = 0;
}
由于并没有学习指针,所以这里先等待补充
题目分析;
错误思路;
将数组分为两部分先用m = strlen(s);将数组的大小统计出来,然后输入n,将数组分为前n和m-n两部分,然后分别交换
问题所在;
解决方案;
利用%计算
n = n % m;
这样计算后假设输入的字符串是asd,且输入的n为7
7%3结果是1
那么后面用for循环
for (i = n; i < m; i++)
{
printf("%c", s[i]);
}
for (i = 0; i < n; i++)
{
printf("%c", s[i]);
}
因为输入的n为7
那么将执行第一个for循环,i的初始值1
i<=3,则进行for循环里面的语句
如果输入的n为3的倍数,那么执行for循环里面第二个表达式
所得到的结果不变,这样这个问题就得到解决了
6-13 折半查找 (15 分)