9月13日(代修)

#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 = 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循环里面的语句
9月13日(代修)_第1张图片
如果输入的n为3的倍数,那么执行for循环里面第二个表达式
所得到的结果不变,这样这个问题就得到解决了

6-13 折半查找 (15 分)

你可能感兴趣的:(9月13日(代修))