c第四次(2)上上机

  • 格式:doc
  • 大小:39.00 KB
  • 文档页数:5

第四次上上机(二)

1. 将两个字符串连接起来,不用strcat函数

#include

void main( )

{char str1[20],str2[10];

int i=0,j=0;

printf("enter str1 and str2:");

scanf("%s%s",str1,str2); //两个字符串之间用空格分隔

while(str1[i] !='\0') i++; //找串str1中的串结束符'\0'

while(str2[j] !='\0')

str1[i++]=str2[j++]; //将串str2中的字符连接到串str1之后

str1[i]='\0'; //将串结束符放在str1之后

printf("str1 is:%s\n",str1);

}

2. 输入一行字符,统计其中字母、数字和其它字符的个数。

#include

#include

void main( )

{ int i,k,a[3]={0,0,0}; char str[40];

printf("请输入一个字符串:");

gets(str);

k=strlen(str);

for(i=0;i

{ if(str[i]>='a' && str[i]<='z' || str[i]>='A' && str[i]<='Z')

a[0]++; //是字母,则字母的个数加一

else if (str[i]>='0' && str[i]<='9')

a[1]++; //是数字,则数字的个数加一

else

a[2]++;//既不是字母,也不是数字,则其它字符的个数加一

}

printf("字母的个数:%d,数字的个数:%d,其它字符的个数:%d\n",

a[0],a[1],a[2]);

}

3. 将字符串中所有的小写字母转换为大写字母

#include

void mystrupr(char string[])

{

int i = 0;

while(string[i]!=0) {

if(string[i]>='a' && string[i]<='z')

string[i] = string[i]-'a'+'A';

i = i+1;

}

}

void main()

{

char str[] = "This is a sample.";

mystrupr(str);

printf("%s\n",str);

}

4. 求字符串的长度

#include

#include

int mystrlen(char string[])

{

int len = 0;

while(string[len]!='\0')

len = len+1;

return len;

}

void main()

{

char string[81];

int len = 0;

printf("输入一个字符串 : ");

gets(string);

printf(" The length of string :%d\n",mystrlen(string));

}

5. .第七章 数组课后作业

7.2采用选择法对10个整数按升序的顺序排序。

程序分析:设有10个数,将a[1]与 a[2] ~a[10]比较,若a[1]比a[2] ~a[10]都小,则不交换。

若a[2] ~a[10]中有一个以上比a[1]小,则将其中最小的一个与a[1]交换(假如a[i]与a[1]), 此时a[1]中存放了10个数中最小的。

第二轮将a[2] 与a[3] ~a[10]比较,将剩下的9个数中的最小者a[i]与a[2]对换,

此时a[2]中存放的是10个数中第二个小的数。

依次类推,共进行9轮比较,a[1] ~a[10]就已按从小到大的顺序存好了。

#include

void main()

{int i,j,min,temp,a[11];

for(i=1;i<=10;i++){printf("a[%d]=",i);

scanf("%d",&a[i]);}

for(i=1;i<=9;i++)

{min=i;

for(j=i+1;j<=10;j++)

if(a[min]>a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;}

printf("the sorted numbers:\n");

for (i=1;i<=10;i++)

printf("%5d",a[i]);printf("\n");}

7.3求一个3×3的整型矩阵对角线元素之和

#include

void main()

{int a[3][3],sum=0;

int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf(“%d”,&a[i][j]);

for(i=0;i<3;i++)

sum=sum+a[i][i];

printf(“sum=%6d\n”,sum);}

7.4 已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

分析:

(1)假设a数组已排好序,如果插入的数num比a 数组最后一个数大。则将它放在a数组的尾部。

(2如果插入的数num不比a 数组最后一个大,则将它依次和a[0]到a[n-1]比较,直到出现a[i]>num,这时表示a[0]到a[i-1]之前的各元素比num 小,而a[i]到a[n-1] 的各元素比num 大。num理应插到a[i-1]之后,从a[i]到a[n-1]各元素向后移一个位置。a[i]变成a[i+1], ….a[n-1]变成a[n],然后将num放在a[i]中。

#include

void main()

{int a[11]={1,4,6,9,13,16,19,28,40,100};

int num,i,j;

for(i=0;i<10;i++)

printf("%5d",a[i]);

printf("\n"); printf("insert data:");

scanf("%d",&num);

if(num>a[9]) a[10]=num;

else {for(i=0;i<10;i++)

if(a[i]>num)

{for(j=9;j>=i;j--)

a[j+1]=a[j];

a[i]=num;break;

}

}

printf("now,array a:\n");

for(i=0;i<11;i++)

printf("%5d",a[i]);

printf("\n");}

7.14编写一个程序,将字符数组2中的字符串拷贝到字符数组1中。不用strcpy函数。

#include

#include

void main()

{char s1[80],s2[80];

int i;

printf(“input s2:”);

scanf(“%s”,s2);

for(i=0;i<=strlen(s2);i++)

s1[i]=s2[i];

printf(“s1:%s\n”,s1);)}

6. // Example 打印回文数

#include

int Ispalindrome(int n); //函数原型

void main()

{

int i;

for(i=1000;i<10000;i++)

{

if(Ispalindrome(i)) //调用函数Ispalindrome()

printf("%d\t",i);

}

printf("\n");

}

int Ispalindrome(int n)

{ int k,m=0;

k=n;

while(k)

{

m=m*10+k%10;

k=k/10;

}

return (m==n);

}

7. // Example :比较两个字符串

#include

int mystrcmp(char s1[],char s2[])

{

int i = 0;

while(s1[i]==s2[i] && s1[i]!=0 && s2[i]!=0)

i++;

return s1[i]-s2[i];

}

void main()

{

char s1[100]="Zhang3";

char s2[100]="Li4";

printf("The answer is \n");

if(mystrcmp(s1,s2)>0)

printf("%s>%s\n",s1,s2);

else if(mystrcmp(s1,s2)==0)

printf("%s=%s\n",s1,s2);

else

printf("%s<%s\n",s1,s2);

}