niusouti.com

请补充函数fun(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:1,1,1,2,2,2,3, 4,4,5,5,6,6,7,7,8,9,9,10,10。删除后,数组中的内容应该是:1,2,3,4,5,6,7, 8,9,10。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>defi

题目

请补充函数fun(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:1,1,1,2,2,2,3, 4,4,5,5,6,6,7,7,8,9,9,10,10。

删除后,数组中的内容应该是:1,2,3,4,5,6,7, 8,9,10。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

define N 80

int fun(int a[],int n)

{

int i, t,j=0;

t=a[0];

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

if(【 】)

;

else

{

【 】;

t=a[i];

}

a[j++]=t;

return j;

}

main()

{

int a[N]={1,1,2,2,2,3,4,4,5,5,6,6,6,

7,7,8,9,9,10,10},i,n=20;

printf("The original data:\n");

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

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

n=fun(a,n);

printf("\n\nThe data after deleted ;

\n");

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

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

printf("\n");

}


相似考题
更多“请补充函数fun(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小 ”相关问题
  • 第1题:

    已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat把这两个文件中的数存入数组a和b中,请考生编制一个函数jsVal,实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数组C中,再对数组C中的数按从小大的顺序进行排序,最后调用输出函数writeDat把结果C输出到文件out.dat中。组成新数的条件:如果数组a和b中相同下标位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组C中。


    正确答案:
    【审题关键句】数组相同下标位置上的奇数和偶数,二进制数左移八位,对应数组元素相加,保存到新数组,从小到大排序。
    【解题思路】
    ①定义循环变量i、i和无符号整型变量v。
    ②在for循环语句中,循环变量i从0开始,依次递增直到其值等于MAX。在循环体中,用if语句判断如果a[i]是奇数且b[i]是偶数或者a[i]是偶数且b[i]是奇数,则把a[i]左移八位后与b[i]的和赋给c[cnt],同时cnt加1。
    ③在第一层for循环语句中,循环变量i从0开始,依次递增直到其值等于或大于cnt。在第二层for循环语句中,循环变量j从i十1开始,依次递增直到其值等于或大于cnt。在循环体中,用if,吾句判断如果c[i]大于c[j],则两者互换,实现数组C中元素从小到大的排序。
    【参考答案】

  • 第2题:

    已知IN2.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数 jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat() 把结果cnt及数组b中符合条件的4位数输出到 OUT2.DAT文件中。

    注意:部分源程序已给出。

    程序中已定义数组:a[200],b[200],已定义变量:cnt。

    请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。


    #include
    #define MAX 200
    int a[MAX], b[MAX], cnt = 0 ;
    void writeDat();
    void jsVal()
    {
    int i,j; /*定义循环控制变量*/
    int temp; /*定义数据交换是的暂存变量*/
    for(i=0;i
    if(a[i]%2!=0) /*如果当前数是奇数*/
    for(j=i+1;j<=i+5;j++) /*取该数后面的5个数进行比较*/
    {
    if(a[i]
    break; /*如果当前数不满足比后面5个数都大的条件,则跳出循环*/
    else if(j==i+5) /*如果当前数比后面的5个数都大*/
    {
    b[cnt]=a[i]; /*将满足条件的数存入数组b中*/
    cnt++; /*并统计满足条件的数的个数*/
    }
    }
    for(i=0;i
    for(j=i+1;j
    if(b[i]>b[j])
    {
    temp=b[i];
    b[i]=b[j];
    b[j]=temp;
    }
    }
    void readDat()
    {
    int i ;
    FILE *fp;
    fp = fopen("IN2.DAT", "r") ;
    for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
    fclose(fp) ;
    }
    void main()
    {
    int i ;
    readDat() ;
    jsVal() ;
    printf("满足条件的数=%d\n", cnt) ;
    for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
    printf("\n") ;
    writeDat() ;
    }
    void writeDat()
    {
    FILE *fp;
    int i ;
    fp = fopen("OUT2.DAT", "w") ;
    fprintf(fp, "%d\n", cnt) ;
    for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ;
    fclose(fp) ;
    }

  • 第3题:

    【简答题】编程实现功能:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是:


    手机中每个应用程序消耗了多少手机流量,那么这些功能Android中是如何实现的呢?按照惯例,先来谈谈原理级别的东西。Android系统中封装了一套流量数据API,这些API可以很好的管理Android系统流量使用情况。可以基于这些Android API来实现管理手机流量的功能。这些API很好的封装在了android.net包下的TrafficStats中,主要的方法有:
    TrafficStats.getMobileRxBytes();//2g/3g接收的流量
    TrafficStats.getMobileRxPackets();//2g/3g接收的包信息
    TrafficStats.getMobileTxBytes();//2g/3g上传的流量
    TrafficStats.getMobileTxPackets();//2g/3g上传的包信息
    TrafficStats.getTotalRxBytes();//手机总共接收的流量
    TrafficStats.getTotalTxBytes();//手机总共上传的流量
    TrafficStats.getUidRxBytes(uid); //得到某个应用程程序接收的流量
    TrafficStats.getUidTxBytes(uid); //得到某个应用程程序接收的流量
    基于这些方法实现一个Android手机流量管理的程序示例。
    Android编程实现简单流量管理功能:
    packagecn.itcast.mobilesafe.ui;
    importjava.util.List;
    importandroid.app.Activity;
    importandroid.content.Intent;
    importandroid.content.pm.PackageManager;
    importandroid.content.pm.ResolveInfo;
    importandroid.graphics.drawable.Drawable;
    importandroid.net.TrafficStats;
    importandroid.os.Bundle;
    importandroid.view.View;
    importandroid.view.ViewGroup;
    importandroid.widget.BaseAdapter;
    importandroid.widget.ImageView;
    importandroid.widget.ListView;
    importandroid.widget.TextView;
    importcn.itcast.mobilesafe.R;
    importcn.itcast.mobilesafe.util.TextForMater;
    public classTrafficManagerActivity extends Activity {
    private TextView _3gTotal;
    private TextView wifiTotal;
    private ListView content;
    private String mobileTraffic;
    private String wifiTraffic;
    private PackageManager pm;
    private TrafficAdapter adapter;
    @Override
    protected void onCreate(BundlesavedInstanceState) {
    super.onCreate(savedInstanceState);
    pm = getPackageManager();
    setContentView(R.layout.traffic_manager);
    _3gTotal = (TextView)this.findViewById(R.id._3gTotal);
    wifiTotal = (TextView)this.findViewById(R.id.wifiTotal);
    content = (ListView)this.findViewById(R.id.content);
    setTotalData();
    adapter = new TrafficAdapter();
    content.addHeaderView(View.inflate(this,R.layout.traffic_title, null));
    content.setAdapter(adapter);
    }
    private void setTotalData() {
    long mobileRx =TrafficStats.getMobileRxBytes();
    long mobileTx = TrafficStats.getMobileTxBytes();
    long totalRx =TrafficStats.getTotalRxBytes();
    long totalTx =TrafficStats.getTotalTxBytes();
    long wifiRx = totalRx - mobileRx;
    long wifiTx = totalTx - mobileTx;
    mobileTraffic =TextForMater.getDataSize(mobileRx + mobileTx);
    _3gTotal.setText(mobileTraffic);
    wifiTraffic =TextForMater.getDataSize(wifiTx + wifiRx);
    wifiTotal.setText(wifiTraffic);
    }
    private class TrafficAdapter extendsBaseAdapter{
    List<ResolveInfo> resolveInfos ;
    public TrafficAdapter() {
    super();
    Intent intent = new Intent();
    intent.setAction("android.intent.action.MAIN");
    intent.addCategory("android.intent.category.LAUNCHER");
    resolveInfos =pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    }
    @Override
    public int getCount() {
    return resolveInfos.size();
    }
    @Override
    public Object getItem(int position) {
    return position;
    }
    @Override
    public long getItemId(int position) {
    return position;
    }
    @Override
    public View getView(int position, ViewconvertView, ViewGroup parent) {
    View view ;
    if(null == convertView){
    view =View.inflate(getApplicationContext(), R.layout.traffic_item, null);
    }else{
    view = convertView;
    }
    ViewHolder holder = new ViewHolder();
    holder.iv_traffic_icon = (ImageView)view.findViewById(R.id.iv_traffic_icon);
    holder.tv_traffic_name = (TextView)view.findViewById(R.id.tv_traffic_name);
    holder.tv_traffic_tx = (TextView)view.findViewById(R.id.tv_traffic_tx);
    holder.tv_traffic_rx = (TextView)view.findViewById(R.id.tv_traffic_rx);
    ResolveInfo info =resolveInfos.get(position);
    String appName =info.loadLabel(pm).toString();
    holder.tv_traffic_name.setText(appName);
    Drawable icon = info.loadIcon(pm);
    holder.iv_traffic_icon.setImageDrawable(icon);
    int uid = info.activityInfo.applicationInfo.uid;
    holder.tv_traffic_rx.setText(TextForMater.getDataSize(TrafficStats.getUidRxBytes(uid)));
    holder.tv_traffic_tx.setText(TextForMater.getDataSize(TrafficStats.getUidTxBytes(uid)));
    return view;
    }
    }
    static class ViewHolder{
    ImageView iv_traffic_icon;
    TextView tv_traffic_name;
    TextView tv_traffic_tx;
    TextView tv_traffic_rx;
    }
    }
    traffic_manager.xml
    <?xmlversion="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TableLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    <TableRow
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    <TextView
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="2G/3G总流量" />
    <TextView
    android:id="@+id/_3gTotal"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
    </TableRow>
    <TableRow
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    <TextView
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Wifi总流量" />
    <TextView
    android:id="@+id/wifiTotal"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
    </TableRow>
    </TableLayout>
    <SlidingDrawer
    android:id="@+id/ll_sd_traffic"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:content="@+id/content"
    android:handle="@+id/handle"
    android:orientation="vertical">
    <ImageView
    android:id="@id/handle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/notification" />
    <ListView
    android:id="@id/content"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    </ListView>
    </SlidingDrawer>
    </LinearLayout>
    traffic_manager_item.xml
    <?xmlversion="1.0" encoding="utf-8"?>
    <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal">
    <ImageView
    android:id="@+id/iv_traffic_icon"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:src="@drawable/ic_launcher" />
    <TextView
    android:id="@+id/tv_traffic_name"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:text="名称" />
    <TextView
    android:id="@+id/tv_traffic_tx"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:text="上传" />
    <TextView
    android:id="@+id/tv_traffic_rx"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:text="下载" />
    </LinearLayout>
    traffic_title.xml
    <?xmlversion="1.0" encoding="utf-8"?>
    <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal">
    <TextView
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:text="图标" />
    <TextView
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:text="名称" />
    <TextView
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:text="上传" />
    <TextView
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:text="下载" />
    </LinearLayout>

  • 第4题:

    请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

    例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。

    删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。

    注意:部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是删去一维数组中所有相同的数,使之只剩一个。解题思路是,首先在函数中定义临时变量指向每一个元素,然后在循环过程中将临时值和其他元素进行比较,如果相同,那么跳过相同字符。

  • 第5题:

    已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续大于该4位数以前的5个数且该数是偶数(该4位数以前不满5个数,则不统计),则统计出满足此条件的数个数cnt并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到文件OUT37.DAT中。

    注意:部分源程序已给出。

    程序中已定义数组:a[200],b[200],已定义变量:cnt。

    请勿改动主函数main( )、读函数readDat()和写函数writeDat( )的内容。


    答案:
    #include
    #define MAX 200
    int a[MAX],b[MAX],cnt=0;
    void writeDat();
    void jsVal()
    {
    int i,j; /*定义循环控制变量*/
    int temp; /*定义数据交换是的暂存变量*/
    for(i=5;i
    if(a[i]%2==0) /*如果当前数是偶数*/
    for(j=i-5;j<=i-1;j++) /*取该数前面的5个数进行比较*/
    {
    if(a[i]
    break; /*如果当前数不满足比前面5个数都大的条件,则跳出循环*/
    else if(j==i-1) /*如果当前数比前面的5个数都大*/
    {
    b[cnt]=a[i]; /*将满足条件的数存入数组b中*/
    cnt++; /*并统计满足条件的数的个数*/
    }
    }
    for(i=0;i
    for(j=i+1;j
    if(b[i]
    {
    temp=b[i];
    b[i]=b[j];
    b[j]=temp;
    }
    }
    void readDat()
    {
    int i;
    FILE *fp;
    fp=fopen("in37.dat","r");
    for(i=0;i
    fscanf(fp,"%d",&a[i]);
    fclose(fp);
    }
    void main()
    {
    int i;
    readDat();
    jsVal();
    printf("满足条件的数=%d\n",cnt);
    for(i=0;i
    printf("%d ",b[i]);
    printf("\n");
    writeDat();
    }
    void writeDat()
    {
    FILE *fp;
    int i;
    fp=fopen("out37.dat","w");
    fprintf(fp,"%d\n",cnt);
    for(i=0;i
    fprintf(fp,"%d\n",b[i]);
    fclose(fp);
    }