感觉自己最近都要写博客,看C语言了,因为快考试了,最近压力好大啊!!!!
话不多说,指针与函数,开始吧!!!
[5880](https://222-27-166-246.webvpn.nefu.edu.cn/studentExercise/index?currentClassId=459#4880_exercise_716_
#include <stdio.h>
#include <stdlib.h>
int main()
{ float **a,*b,s;
int n,i,j;
while(scanf("%d",&n)!=-1)
{ a=(float *)malloc(sizeof(float *)*n);
for(i=0;i<n;i++)
a[i]=(float *)malloc(sizeof(float)*3);
b=(float *)malloc(sizeof(float )*3);
for(i=0;i<3;i++)
b[i]=0;
for(i=0;i<n;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
for(i=0;i<n;i++)
{ s=0;
for(j=0;j<3;j++)
{s=s+a[i][j];b[j]=b[j]+a[i][j];}
printf("%.2f %.2f\n",s,s/3);
}
for(i=0;i<3;i++)
printf("%.2f %.2f\n",b[i],b[i]/n);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{ char a[100];
char *p;
int i,j,n,f,l;
int strat,end;
int b[100]={0};
while(~scanf("%d",&n))
{ for(f=0;f<n;f++)
{ getchar();
gets(a);
p=&a;l=strlen(a);
for(i=0;i<l;i++)
{
b[i]=0;
}
for(i=0;i<l;i++)
{
if((*(p+i)<='Z'&&*(p+i)>='A')||(*(p+i)<='z'&&*(p+i)>='a'))
{strat=i;break;}
}
for(i=l-1;i>=0;i--)
{
if((*(p+i)<='Z'&&*(p+i)>='A')||(*(p+i)<='z'&&*(p+i)>='a'))
{end=i;break;}
}
j=1;
int num=0;
for(i=strat;i<=end;i++)
{if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z'))
{
printf("%c",p[i]);
if(i==end)
{
num++;printf("\n");break;
}
if(!(p[i+1]>='a'&&p[i+1]<='z')||(p[i+1]>='A'&&p[i+1]<='Z'))
{printf(" ");num++;}
}
}
printf("分出了%d个单词\n",num);
}
}
return 0;
}
这个题算法很重要!!!!!!!
#include <stdio.h>
#include <stdlib.h>
void count(char *p){
int i,start,end,num=0;
for(i=0;i<strlen(p);i++)
if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z'))
{start=i;break;}
for(i=strlen(p)-1;i>=0;i--)
if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z'))
{end=i;break;}
for(i=start;i<=end;i++){
if((p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')){
printf("%c",p[i]);
if(i==end)
{
num++;printf("\n");break;
}
if(!(p[i+1]>='a'&&p[i+1]<='z')||(p[i+1]>='A'&&p[i+1]<='Z'))
{printf(" ");num++;}
}
}
printf("分出了%d个单词\n",num);
}
int main()
{
int n;
while(~scanf("%d",&n)){
while(n--){
char a[1010];
char *p=a;
scanf(" ");
gets(p);
count(p);
}
}
return 0;
}
这个用了指针函数,学学习
#include <stdio.h>
#include <stdlib.h>
char *fun(char*p[],int num)
{
int i,max=0,mi;
for(i=0;i<num;i++)
{
int j,num=0;
char *temp=p[i];
for(j=0;j<strlen(p[i]);j++,temp++){
if(*temp=='*')
num++;
}
if(num>max){
max=num;mi=i;
}
}
return p[mi];
}
int main()
{
int n;
while(~scanf("%d",&n)){
char a[100][55];
char *p[100];
int i;
for(i=0;i<n;i++){
scanf("%s",a[i]);
p[i]=a[i];
}
char *ans;
ans=fun(p,n);
printf("%s\n",ans);
}
return 0;
}
真是从未看懂过的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort1(char **pp,int n)
{ int i,j;char temp[51];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(pp[i],pp[j])>0)
{strcpy(temp,pp[i]);
strcpy(pp[i],pp[j]);
strcpy(pp[j],temp);
}
}
}
//补充完成程序
}
void output1(char *p[],int n)
{ int i;
for(i=0;i<n;i++)
printf("%s\n",p[i]);
//补充完成程序
}
int main()
{
void sort1(char **pp,int n);
void output1(char *p[],int n);
char str[50],*cp[20];
int n,l,i;
while(scanf("%d\n",&n)!=EOF)
{ for(i=0;i<n;i++)
{ gets(str);
//start
l=strlen(str);
cp[i]=(char*)malloc(sizeof(char)*l);
strcpy(cp[i],str);
//在此写动态开辟并存储程序
//end
}
sort1(cp,n);
output1(cp,n);
}
return 0;
}
这里特别注意,字符串指针需要进行复制输入
l=strlen(str);
cp[i]=(char*)malloc(sizeof(char)*l);
strcpy(cp[i],str);
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int order;
double initial,x;//x表示精度
double f(int order,double x){
if(order==1)
return x*x*x-x*x-1;
if(order==2)
return x*x*x*x-3*x+1;
if(order==3)
return x-exp(-x);
}
double f2(int order,double x){
if(order==1)
return 3*x*x-2*x;
if(order==2)
return 4*x*x*x-3;
if(order==3)
return 1+exp(-x);
}
int main()
{
while(~scanf("%d%lf%lf",&order,&initial,&x)){
double now=initial-f(order,initial)/f2(order,initial);
double pre=initial;//换个名字,initial太难打了
while(fabs(now-pre)>x){
pre=now;
now=pre-f(order,pre)/f2(order,pre);
}
printf("%d %.2e %.5lf\n",order,x,now);
}
}