1. 程式人生 > >指標進階(修改過了,按老師要求)

指標進階(修改過了,按老師要求)

程式一
計算最長的字串長度:輸入n (n<10)個字串,輸出其中最長字串的有效長度。要求自定義函式 Int max_len ( char *s[],int n),用於計算有n個元素的指標陣列s中最長的字串的長度。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void max_len(char *s[],int n)
{
	int maxlen=strlen(s[0]);
	for(int i=1;i<n;i++)
	{
		if(strlen(s[i])>maxlen)
			maxlen=strlen(s[i]);
	}	
	printf("最長的字串長度為:%d\n",maxlen);
} 
int main()
{
	int n=0;
	char *s[20],a[10]; 
	scanf("%s",a);
	while(a[0]!='#')
	{
		s[n]=(char*)malloc(sizeof(char)*(strlen(a)+1)); 
		strcpy(s[n],a);
		n++; 
		scanf("%s",a);
	}
	max_len(s,n);
	return 0;
} 

程式二
指定位置輸出字串:輸入一個字串後再輸人兩個字元,輸出此字串中從與第1個字元匹配的位置開始到與第2個字元匹配的位置結束的所有字元。例如,輸入字串“ program”與2個字元“r”和“g”後,輸出“rog”。要求自定義函式char * match(char*S, char ch1, char ch2)返回結果字串的首地址。

#include<stdio.h>
#include<string.h>
char *match(char*S, char ch1, char ch2)
{
	char *a;
	int i=0,j=0;
	while(S[j]!='\0')
	{
		if(S[j]==ch1)
		{
			while(S[j]!=ch2)
			{
				if(S[j]!='\0')
				a[i++]=S[j++];
				else
				return NULL;
			}
			a[i]=S[j];
			return a;
		}
		j++;
	}
	return NULL;
}
int main()
{
	char s[1000];
	char c1,c2;
	printf("輸入一個字串:\n");
	scanf("%s%*c",s);
	//getchar();
	printf("輸入2個字元:\n");
	scanf("%c %c",&c1,&c2);
	if(match(s,c1,c2)!=NULL)
	printf("輸出:%s\n",match(s,c1,c2));
	else
	printf("Not found\n"); 
}

程式三
查詢子串:輸入兩個字串s和t,在字串s中查詢子串t,輸出起始位置,若不存在,則輸出-1。要求自定義函式char* search(char *s,char *t)返回子串t的首地址,若未找到,則返回NULL。

#include<stdio.h> 
#include<string.h>
char* search(char *s,char *t)
{
	int k=0,ls,lt;
	char *p=NULL;
	ls=strlen(s);
	lt=strlen(t);
	for(int i=0;i<ls;i++)
	{
		int j=i;
		while(s[j]==t[k])
		{
			k++;
			j++;
		}
		if(k>=lt)
		{
			p=&s[i];
			return p;
		}
		k=0;
	}
	return NULL;
}

int main()
{
	char s[1000],t[1000],*p=NULL;
	printf("輸入一個字串s:\n");
	scanf("%s%*c",s);
//	getchar(); 
	printf("輸入查詢字串t:\n"); 
	scanf("%s",t);
	if((p=search(s,t))!=NULL)
		printf("%d\n",p-s);
	else
		printf("Not found\n"); 
} 

程式四
編寫C程式,它的功能是通過帶引數的命令列,輸入兩個整數,輸出兩個整數之間的完數。
(有兩個引數被送給main(),其中的一個描述了命令列引數的個數,通常稱為argc;另一個是命令列引數的陣列,通常稱為argv。)
(這個我是真真真不會!求教!我只能說一下這麼找命令提示符視窗)
此電腦——C盤——然後一定要先Shift,然後右鍵——開啟命令視窗。(只右鍵是沒有的)
在這裡插入圖片描述
然後工作列右鍵點一下命令提示符。
在這裡插入圖片描述
WIN+R開啟這個,找到路徑,命令檔名
在這裡插入圖片描述
然後(才不給看)在這裡插入圖片描述

上述太麻煩,就或者直接WIN+R(室友是搜的):在這裡插入圖片描述
然後輸入cmd,然後回車:
在這裡插入圖片描述
在這裡插入圖片描述
不確定的程式碼:

#include<stdio.h>
int main(int argc,char *argv[])
{
	int a,b;
	sscanf(argv[1],"%d",&a); //用來將輸入的字元型改為整型
	sscanf(argv[2],"%d",&b);
	for(int i=a;i<=b;i++)
	{
		int s=0;
		for(int j=1;j<i;j++)
		{
			if(i%j==0)
				s+=j;
		}
		if(s==i)
			printf("%d ",i);
	}
	return 0;
} 


(最後,我真的只能說,我是個垃圾,我都是亂寫的,我真的不懂什麼命令列引數,我真的不會)
(もし私が間違っているなら、教えてください)