标签:优势 SQ struct 质数 work bre 成绩 证明 就是
答:作业已完成!
完成情况如图:



(1)算法:
第一步:定义一个指针数组,数组内容为各个月份,再定义一个整形变量s;
第二步:如果n的值在1~12之间,那么就返回s;
第三步:如果n值不在1~12,那么就把NULL赋值给s,再返回s。
(2)流程图:
主函数

调用函数

char *getmonth( int n ){
  int s;
   char *a[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
    if(n<13&&n>0){
    s=a[n-1];
    return s;
}
else{
  s=NULL;
  return s;
}
}问题:本题一开始用二维数组做,得不出正确结果
解决办法:用指针数组做就好了。
(1)算法:
第一步:定义a为整形变量,定义一个指针数组,数组内容是星期;
第二步:用for循环遍历数组,如果s和数组里的某一元素相等时就跳出循环;
第三步:如果此时a正好为7,则输出a等于-1,如果a不是7,则直接返回a的值。
(2)流程图:
略。
int getindex(char *s)  
{  
    int a;  
    char *day[7] = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };  
    for (a = 0; a <= 6; a++)  
    {  
        if (strcmp(s, day[a]) == 0) break;  
    }  
    if (a == 7) a = -1;  
    return a;  
}  问题:本题一开始没思路
解决办法:上网查到了strcpy的概念,就是比较两者大小,如果相等就等于零,然后会做了。
(1)算法:
第一步:定义max,i,len为整形变量,且max为0;
第二步:用strlen函数来计算数组中字符串的长度为len;
第三步:如果max比len大,则把max赋值给max,如果max小于等于len,那么就把len的值赋给max;
第四步:循环结束后,返回max的值给主函数。
(2)流程图:
略。
int max_len(char *s[],int n)
{
int max = 0, i,len;
for(i = 0; i < n;i++)
{
len = strlen(s[i]);
if(max>len){
  max=max;
}
else if(max<=len){
  max=len;}
}
return max;
}问题:本题一开始不会没思路
解决办法:w上网查到了用strlen函数能求出来字符长度,就会了。
(1)算法:
第一步:定义i,j为整数变量;指针p为空指针;
第二步:用for循环如果s[i]=ch1,那么把s[i]的地址赋给p,然后第二个for循环如果s[j]!=ch2,那么输出s[j],如果s[j]=ch2,那么输出s[j]\n,返回p;
第三步:跳出第二个循环后,输出\n,再返回p的值;
第四步:跳出第一个循环,把\n赋给s[i-1],再把s[i-1的地址]赋值给p,返回p的值。
(2)流程图:
略。
char *match( char *s, char ch1, char ch2 ){ 
int i,j; 
char *p=NULL; 
for(i=0;s[i]!=‘\0‘;i++){ 
if(s[i]==ch1){ 
p=&s[i]; 
for(j=i;s[j]!=‘\0‘;j++){ 
if(s[j]!=ch2){ 
printf("%c", s[j]); 
}
if(s[j]==ch2){ 
printf("%c\n", s[j]); 
return p; 
} 
} 
printf("\n"); 
return p; 
} 
} 
s[i-1]=‘\n‘;
p=&s[i-1];
return p; 
}问题:本题一直没搞懂
解决办法:上网查找,把网上代码复制下来了。
完成情况如图:

(1)算法:
(2)流程图:
略。
struct ListNode *readlist()
{
    int data;
    struct ListNode *head=NULL;
    struct ListNode *p;
    while(scanf("%d",&data)&&data!=-1)
    {
        struct ListNode *q=(struct ListNode*)malloc(sizeof(struct ListNode));
        if(q!=NULL)
        {
            q->data=data;
            q->next=NULL;
        }
        else exit(1);
        if(head!=NULL)
        {
             p->next=q;
        }
        else head=q;
        p=q;
    }
    return head;
}
struct ListNode *getodd( struct ListNode **L )
{
    struct ListNode *head0=NULL,*head1=NULL,*p0,*p1;
    while((*L)!=NULL)
    {
        int data=(*L)->data;
        struct ListNode *q=(struct ListNode*)malloc(sizeof(struct ListNode));
        if(data%2)
        {
            if(q!=NULL)
            {
                q->data=data;
                q->next=NULL;
            }
            else exit(1);
            if(head1!=NULL)
            {
                p1->next=q;
            }
            else head1=q;
            p1=q;
        }
        else
        {
            if(q!=NULL)
            {
                q->data=data;
                q->next=NULL;
            }
            else exit(1);
            if(head0!=NULL)
            {
             p0->next=q;
            }
            else head0=q;
            p0=q;
        }
        *L=(*L)->next;
    }
    *L=head0;
    return head1;
}(1)算法:
(2)流程图:
略。
(1)算法:
(2)流程图:
略。
有一个axb的数组,该数组里面顺序存放了从1到a*b的数字。其中a是你大学号的前三位数字,b是你大学号的后四位数字,比如你的学号是2017023936,那么数组大小是201 x 3936,数组中顺序存放了1到791136(201和3936的积)的整数. 要求用筛选法,把该数组里的质数找出并打印出来,打印格式为5个质数一行,数字间用空格隔开。
筛选法具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
#include <stdio.h>
#include <math.h>
int main ()
{
    long int q=0,c=0,d=0,e=0;
    q = 201*990;
    int axb[q];
    for(c=1;c<q;c++)
    {
        axb[c-1] = c;
    }
    for(c=1;c<=q;c++)
    {
        for(d=2;d<=sqrt(c);d++)
        {
            if(c%d==0){
                axb[c-1]=1;
            }
            }
            }
    for(c=0,e=0;c<q;c++)
    {
        if(axb[c]!=1){
            printf("%d ",axb[c]);
            e++;
            if(e%5 == 0){
            printf("\n");
            }
            }
            }
    return 0;
}(1)如何理解指针数组,它与指针、数组有何关系?为何可以用二级指针对指针数组进行操作?
答:指针数组就是一个数组,但是这个数组是个指针;因为题目中指针数组中的一个元素是字符串,该字符串也是个指针,它指向其中的元素,一个字符串里面的元素也可以用二维数组来写。
(2)将C高级第三次PTA作业(1)任何一个题目改为使用二级指针对指针数组进行操作。
(3)用指针数组处理多个字符串有何优势?可以直接输入多个字符串给未初始化的指针数组吗?为什么?
答:二维数组会浪费空间。
不可以,指针要先初始化,要不然不知道指针指向哪一个地址。
(1)提交证明:


(2)Git地址:https://git.coding.net/jsjyuyaosong/usth--work.c.git
史泽文:http://www.cnblogs.com/shilcz/p/8906128.html
董雅洁:http://www.cnblogs.com/exo123/p/8798720.html
张心悦:http://www.cnblogs.com/zxy980612/p/8858885.html

标签:优势 SQ struct 质数 work bre 成绩 证明 就是
原文地址:https://www.cnblogs.com/jsjyys/p/8900992.html