1.

#include"stdio.h"()
  
#include"string.h"
void fun(char *s)
{
char a[10];strcpy(a,"STRING");
s=a;//这里将数组a的起始地址赋给了s,也就是s指向的是字符串“STRING”,改变了s的指向与字符串"PROGRAM"没有什么关系了
}
main()
{char *p="PROGRAM";
fun(p);//调用的时候把p的值赋给形参s,即p和s都指向字符串"PROGRAM"
printf("%s\n",p);//所以输出的时候仍然输出的是PROGRAM

2.

#include <stdio.h>
void  fun(int *s)
{  
   static int j=0;
   do s[j] += s[ j+1]; while(++j<2);
}
main()
{ 
  int i, a[10]={1,2,3,4,5};
  for( i=1; i<3; i++ ) fun( a );
  for( i=1; i<5; i++ ) printf("%d",a[i]);
  printf("\n"); 
}

分析过程:
for(k=1;k<3;k++)循环两次,第一次进入fun时,a[10]={1,2,3,4,5};j=0,
do while循环两次,第一次s[0]+=s[0+1];所以a[10]={3,2,3,4,5};
第二次s[1]+=s[1+1];所以a[10]={3,5,3,4,5};然后退出fun函数回到for(k=1;k<3;k++)进行第二次循环,第二次进入fun时,由于j是static变量,所以值仍然为第一次退出fun时的值,即j=2,因为dowhile循环只能进入一次,即s[2]+=s[2+1];所以a[10]={3,5,7,4,5};退出fun回到main函数中执行

3.题目

c语言二级第十三套

代码:

#include  <string.h>
#include  <stdio.h>
void fun(char  t[])
{
 char c;
 int i,j;
 /*************found**************/
 for(i=strlen(t)-1;i>0;i--)
     for(j=0;j<i;j++)
        /*************found**************/
	  if(t[j]>t[j+1])//升序
          {
           c= t[j];
           t[j]=t[j+1];
           t[j+1]=c;
          }
	  
}
void main()
{
 char  s[81];
 
 printf("\nPlease  enter a character string :");
 gets(s);
 printf("\n\nBefore sorting :\n  %s",s);
 fun(s);
 printf("\nAfter sorting decendingly:\n %s",s);
}

结果:

c语言二级第十三套

4.题目

c语言二级第十三套

代码

#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void fun(char *ss)
{
	int i;
	for(i=0;ss[i]!='\0';i++){
		if(i%2==1&&ss[i]>='a'&&ss[i]<='z'){
			//转化为大写字母
			ss[i]=ss[i]-32;//利用ASSCI就可以将小写转化为大写
		
		}
	
	}
  
}
void main()
{
  FILE *wf;
  char tt[81],s[81]="abc4Efg";
  system("CLS");
  printf("\nPlease enter an string within 80 characters:\n");
  gets(tt);
  printf("\n\nAfter changing, the string\n  %s",tt);
  fun(tt);
  printf("\nbecomes\n %s\n",tt);
/******************************/
  wf=fopen("out.dat","w");
  fun(s);
  fprintf (wf,"%s",s);
  fclose(wf);
/*****************************/
}

结果

c语言二级第十三套

相关文章: