79 date:2021.2.24
要点:
详细代码如下:
#include <stdio.h>
#include <string.h>
#define M 5
#define N 20
void fun(char (*ss)[N])
{
int i, j, n, len=0;
for(i=0; i<M; i++)
{
n=strlen(ss[i]);
if(i==0) len=n;
if(len<n)len=n;
}
for(i=0; i<M; i++) {
/**********found**********/
n=strlen(ss[i]); //strlen()不包括串尾的'\0',用于计算每一个字符串的长度
for(j=0; j<len-n; j++)
/**********found**********/
ss[i][n+j]='*'; //要求在字符串右边用字符*补齐,因而填n+j
/**********found**********/
ss[i][n+j+0]='\0'; // ss[i][len]是最后的字符应以'\0'结束,所以填0
}
}
void main()
{
char ss[M][N]={
"shanghai","guangzhou","beijing","tianjing","cchongqing"};
int i;
printf("The original strings are :\n");
for(i=0; i<M; i++) printf("%s\n",ss[i]);
printf("\n");
fun(ss);
printf("The result is :\n");
for(i=0; i<M; i++) printf("%s\n",ss[i]);
}
要点:
空格不是’\0’ 而是‘ ’
toupper()函数
详细代码如下:
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
void fun(char *p)
{
int k=0;
for ( ;*p;p++)
if (k)
{
/*************found**************/
if (*p==' ') //对指针的理解,当引用指针指向元素时,应使用指针运算符*号
{
k=0;
/*************found**************/
*(p-1)=toupper( *(p-1)); //p指向空格时,将前面的字符转换成大写
}
}
else
k=1;
}
void main()
{
char chrstr[64];
int d;
system("CLS");
printf("\nPlease enter an English sentence within 63 letters: ");
gets(chrstr);
d=strlen(chrstr);
chrstr[d]=' ';
chrstr[d+1]=0;
printf("\nBofore changing:\n %s",chrstr);
fun(chrstr);
printf("\nAfter changing:\n %s",chrstr);
}
要点:
双重for循环
交换
详细代码如下:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void fun(char *s,int num)
{
/*
analyse:
*/
char ch;
int i,j;
for(i = 1; i < 6; i++) //双重for循环没看懂,又好像看懂了,害……
for(j = i+1; j < 6; j++)
{
if(*(s+i) < *(s+j))
{
ch = *(s+j);
*(s+j) = *(s+i);
*(s+i) = ch;
}
}
/* error:
int i,j,big = s[1],range = strlen(s);
for( i = 0; i < range-1; i++)
{
if(s[i+1] > big)
big = s[i+1];
}
for(j =0; j<range; j++)
{
}
*/
}
void main()
{
void NONO( );
char s[10];
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
NONO();
}